Добрый вечер, Михаил. Помогите пожалуйста разобраться в ошибке.
Запускаю экспорт данных из Квика.
Таблицы: "Таблица лимитов по денежным средствам" и "Таблица Купить/Продать".
Эти таблицы переименовал и они имеют названия: "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()
В чем может быть причина ошибки?
Комментарии (9)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
А что за тип исключения?
System.ArgumentOutOfRangeException
А Вы случаем перед стопом DDE не отписываетесь от ProcessUnknownDdeData?
Отписываюсь. Не нужно?
вообще нужно, но в данном случае происходит вот что. вы отписываетесь, а квик в последний момент присылает дде данные. соответственно QuikTrader это уже не может обработать. или отписывайтесь, или игнорируйте ошибку.
Немножко не понял логику.
Старт и стоп ДДЕ, насколько я понимаю, запускает и останавливает поток данных из Квика в QuikTrader.
А подписывание и отписывание от события, запускает и останавливает поток данных от QuikTrader к моей части программы.
И исходя из этого старт и стоп ДДЕ не должно никак быть связано с подпиской и отпиской от события.
Поправьте мои рассуждения.
Упустили сам ДДЕ. Он и в квике асинхронен и в S#.
Тысячи извинений, но я все равно не понимаю, что Вы имеете ввиду.
Как связано то, что запускаем или останавливаем экспорт данных из Квика в S#, с тем, что мы подписываемся или отписываемся на какое либо событие в S#?
QuikTrader через ProcessDataError выводит исключение, если пришла неизвестная категория и обработчик ProcessUnknown не имеет подписчиков.