Добрый день. При первом запуске робота все нормально. При втором - вылетает ошибка : Failed Сообщение Connection failed at step 4 with error 233. Одновременно Квик пишет САБЖ. Лечится залезанием в Диспетчер задач Виндовса и отключением оставшегося в памяти процесса (хотя приложения такого уже в списке нет). В чем собака порылась?
コメント (11)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
Собака порылось в том, что Квик не умеет работать с 2-мя подключениями. Нужно спец. шаманские действия производить. А что за приложение остается в памяти? Мой пример? Какой?
Нет, это не ваш пример. Это мой собственный простейший привод (с именем "Привод") всего с двумя кнопками ("Купить по рынку", "Продать по рынку"). Сделан был исключительно с целью ознакомления с основными принципами работы вашей библиотеки, поскольку мне, незнакомому с C#, пришлось реализовывать эти простейшие механизмы (подключение, запуск ДДЕ, получение цены, формирование и отправки заявки) под VB. То что Квик поддерживает только одно подключение - это я уже понял из смысла сообщения :). Вопрос в том что после закрытия приложения "Привод", в списке процессов Диспетчера задач остается процесс "Привод", который и занимает это соединение. Теперь я пытаюсь понять с чем это может быть связано, и что за те самые шаманские действия? Остановка ДДЕ по выходу из приложения "Привод" не помогла.
QuikTrader.Dispose вызывали?
Нет. Это что? Не нашел описания в вашем Хелпе.
Логично - не написал.
В кратце, new QuikTrader - выделяет ресурсы. Dispose - их освобождает.
StopDde - это лишь остановка экспорта. Его тоже нужно вызывать, но это лишь для того, чтобы Квик не ругался и было корректное завершение экспорта.
Вот что пишет документация, если интересно -
http://msdn.microsoft.com/ru-ru/library/system.idisposable.dispose.aspx
Но если не хочется вдаваться в подробности, просто запомните правило: перед закрытием программы вызывайте QuikTrader.Dispose.
Ну я примерно так и понял. Применение метода действительно решило проблему. А поскольку метод системный а не библиотечный то его описания у вас и нет - тоже логично. Спасибо.
Михаил, у меня возникла следующая проблема c инициализацией/ деинициализацией QuikTrader
Если я инициализирую QuikTrader и при этом квик выключен или не залогинен, то вылетит ошибка в trans2quik.dll - все правильно. после этого вызываю .Dispose - получаю ошибку от trans2quik.dll через какое-то время хочу заново запустить (инициализировать) QuikTrader - получаю ошибку "Элемент с тем же ключом уже добавлен" .
тоже самое происходит если изначально QuikTrader - запустился нормально. но потом после отключения Квика - вызвать Dispose.
Помогите, пожалуйста, разобраться, как правильно свернуть работу приложения если квик не залогинен в момент завершения работы и как правильно потом начать работу, не выключая программу.
в try catch обернуть можно, но не понятно как отключать дде сервер. т.к. QuikTrader не хочет правильно выполнять Dispose: квик то отключен и раньше отключения дде, функция выдает ошибку из-за невозможности разорвать соединение с квиком.
Логично. Бага. Спасибо, буду править.
Михаил, обнаружил еще странную вещь. Инициализирую QuikTrader, запускаю экспорт по дде. Потом мне все это надо остановить, предположим. Останавливаю экспорт. делаю дисконект и Dispose. После это не выходя из программы делаю заново включение, т.е. инициализирую QuikTrader и запускаю экспорт по ДДЕ. все таблицы экспортируются, но при этом в GetMarketDepth BestAsk и BestBid - null. Посмотрите, пожалуйста, это только мой баг.