← Zurück

Ошибка при вызове 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()

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (9)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

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 не имеет подписчиков.