← Atrás

Ошибка при вызове StopDDE

Добрый вечер, Михаил. Помогите пожалуйста разобраться в ошибке.

Запускаю экспорт данных из Квика.

Таблицы: "Таблица лимитов по денежным средствам" и "Таблица Купить/Продать".

Эти таблицы переименовал и они имеют названия: "MoneyLimit" и Global.TradesProperty.BuySellTable

В настройках экспорта по DDE указал название MoneyLimit и PaperLimit.

Запускаю следующим образом: Global.Quik.ProcessUnknownDdeData += this.Quik_ProcessUnknownDdeData; Global.Quik.StartDde("MoneyLimit"); Global.Quik.StartDde(Global.TradesProperty.BuySellTable);

Подключается нормально и без ошибок. После чего получаю данные и произвожу необходимы мне действия. После этого пытаюсь закрыть экспорт их этих таблиц следующим образом:

Global.Quik.StopDde("MoneyLimit"); Global.Quik.StopDde(Global.TradesProperty.BuySellTable);

И при выполнении первой строчки появляется исключение: "PaperLimit\r\nParameter name: category"

at Ecng.Trading.Quik.QuikTrader. (String , IList1 ) at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action2 handler, T1 arg1, T2 arg2) at . . () at Ecng.ComponentModel.EventDispatcher.<>c__DisplayClass3.<.ctor>b__1()

В чем может быть причина ошибки?

¿Le resultó útil este tema?

Compartir tema

Comentarios (9)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

Mikhail Sukhov
Mikhail Sukhov

А что за тип исключения?

Maxim
Maxim Autor

System.ArgumentOutOfRangeException

Mikhail Sukhov
Mikhail Sukhov

А Вы случаем перед стопом DDE не отписываетесь от ProcessUnknownDdeData?

Maxim
Maxim Autor

Отписываюсь. Не нужно?

Mikhail Sukhov
Mikhail Sukhov

вообще нужно, но в данном случае происходит вот что. вы отписываетесь, а квик в последний момент присылает дде данные. соответственно QuikTrader это уже не может обработать. или отписывайтесь, или игнорируйте ошибку.

Maxim
Maxim Autor

Немножко не понял логику.

Старт и стоп ДДЕ, насколько я понимаю, запускает и останавливает поток данных из Квика в QuikTrader.

А подписывание и отписывание от события, запускает и останавливает поток данных от QuikTrader к моей части программы.

И исходя из этого старт и стоп ДДЕ не должно никак быть связано с подпиской и отпиской от события.

Поправьте мои рассуждения.

Mikhail Sukhov
Mikhail Sukhov

Упустили сам ДДЕ. Он и в квике асинхронен и в S#.

Maxim
Maxim Autor

Тысячи извинений, но я все равно не понимаю, что Вы имеете ввиду.

Как связано то, что запускаем или останавливаем экспорт данных из Квика в S#, с тем, что мы подписываемся или отписываемся на какое либо событие в S#?

Mikhail Sukhov
Mikhail Sukhov

QuikTrader через ProcessDataError выводит исключение, если пришла неизвестная категория и обработчик ProcessUnknown не имеет подписчиков.