← Назад

Превышено максимальное количество одновременных подключений

Добрый день. При первом запуске робота все нормально. При втором - вылетает ошибка : Failed Сообщение Connection failed at step 4 with error 233. Одновременно Квик пишет САБЖ. Лечится залезанием в Диспетчер задач Виндовса и отключением оставшегося в памяти процесса (хотя приложения такого уже в списке нет). В чем собака порылась?

Комментарии (11)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Mikhail Sukhov
Mikhail Sukhov

Собака порылось в том, что Квик не умеет работать с 2-мя подключениями. Нужно спец. шаманские действия производить. А что за приложение остается в памяти? Мой пример? Какой?

Pulsar
Pulsar Автор

Нет, это не ваш пример. Это мой собственный простейший привод (с именем "Привод") всего с двумя кнопками ("Купить по рынку", "Продать по рынку"). Сделан был исключительно с целью ознакомления с основными принципами работы вашей библиотеки, поскольку мне, незнакомому с C#, пришлось реализовывать эти простейшие механизмы (подключение, запуск ДДЕ, получение цены, формирование и отправки заявки) под VB. То что Квик поддерживает только одно подключение - это я уже понял из смысла сообщения :). Вопрос в том что после закрытия приложения "Привод", в списке процессов Диспетчера задач остается процесс "Привод", который и занимает это соединение. Теперь я пытаюсь понять с чем это может быть связано, и что за те самые шаманские действия? Остановка ДДЕ по выходу из приложения "Привод" не помогла.

Mikhail Sukhov
Mikhail Sukhov

QuikTrader.Dispose вызывали?

Pulsar
Pulsar Автор

Нет. Это что? Не нашел описания в вашем Хелпе.

Mikhail Sukhov
Mikhail Sukhov

Логично - не написал.

В кратце, new QuikTrader - выделяет ресурсы. Dispose - их освобождает.

StopDde - это лишь остановка экспорта. Его тоже нужно вызывать, но это лишь для того, чтобы Квик не ругался и было корректное завершение экспорта.

Вот что пишет документация, если интересно -

http://msdn.microsoft.com/ru-ru/library/system.idisposable.dispose.aspx

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

Pulsar
Pulsar Автор

Ну я примерно так и понял. Применение метода действительно решило проблему. А поскольку метод системный а не библиотечный то его описания у вас и нет - тоже логично. Спасибо.

Andrey
Andrey

Михаил, у меня возникла следующая проблема c инициализацией/ деинициализацией QuikTrader

  1. Если я инициализирую QuikTrader и при этом квик выключен или не залогинен, то вылетит ошибка в trans2quik.dll - все правильно. после этого вызываю .Dispose - получаю ошибку от trans2quik.dll через какое-то время хочу заново запустить (инициализировать) QuikTrader - получаю ошибку "Элемент с тем же ключом уже добавлен" .

  2. тоже самое происходит если изначально QuikTrader - запустился нормально. но потом после отключения Квика - вызвать Dispose.

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

Mikhail Sukhov
Mikhail Sukhov
  1. Я не пробовал создавать QuikTrader при выключенном квике. Судя по ошибке - DDE создается и повторно выкидывает ошибку.
  2. То же самое - это значит ошибка? Возможно. Я не хотел оборачивать в try catch такие блоки, так как это может скрыть нужную ошибку. Поэтому нужно самостоятельно создавать перехват ошибок.
Andrey
Andrey

в try catch обернуть можно, но не понятно как отключать дде сервер. т.к. QuikTrader не хочет правильно выполнять Dispose: квик то отключен и раньше отключения дде, функция выдает ошибку из-за невозможности разорвать соединение с квиком.

Mikhail Sukhov
Mikhail Sukhov

Логично. Бага. Спасибо, буду править.

Andrey
Andrey

Михаил, обнаружил еще странную вещь. Инициализирую QuikTrader, запускаю экспорт по дде. Потом мне все это надо остановить, предположим. Останавливаю экспорт. делаю дисконект и Dispose. После это не выходя из программы делаю заново включение, т.е. инициализирую QuikTrader и запускаю экспорт по ДДЕ. все таблицы экспортируются, но при этом в GetMarketDepth BestAsk и BestBid - null. Посмотрите, пожалуйста, это только мой баг.