Добрый день!
Выполняю следющую комманду:
QT.CancelOrders(false, txtAccount.Text, null, null, this.CSec.ElementAt(0));
Если активна одна заявка, то все корректно отрабатывает, если же несколько активных заявок, после снятия первой заявки выдается исключение - "Элемент с тем же ключом уже добавлен".
В чем может быть причина? Версия библиотеки 2.1. Заранее спасибо.
Comments (5)
Login or Create account, Log in or register to leave a comment
Текст исключения можно полный привести?
Подробная информация об использовании оперативной (JIT) отладки вместо данного диалогового окна содержится в конце этого сообщения.
************** Текст исключения ************** System.ArgumentException: Элемент с тем же ключом уже был добавлен. в System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) в System.Collections.Generic.Dictionary
2.Insert(TKey key, TValue value, Boolean add) в System.Collections.Generic.Dictionary2.Add(TKey key, TValue value) в Ecng.Collections.SynchronizedDictionary2.Add(K key, V value) в Ecng.Trading.Quik.QuikTrader.CancelOrder(Order order) в Ecng.Trading.BusinessEntities.BaseTrader.<>c__DisplayClass2f.<CancelOrders>b__2d(SynchronizedDictionary2 c) в Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action1 action) в Ecng.Trading.BusinessEntities.BaseTrader.CancelOrders(Nullable1 isStopOrder, String account, Nullable1 direction, String classCode, Security security) в Ecng.Trading.Algo.SyncTrader1.CancelOrders(Nullable1 isStopOrder, String account, Nullable1 direction, String classCode, Security security) в SQuikTick_v1.Form1.btnDelAllOrders_Click(Object sender, EventArgsТакая ошибка может произойти, если BaseTrader.TransactionIdGenerator вернул номер транзакции, который уже был использован до этого. У Вас в BaseTrader.TransactionIdGenerator какой класс используется?
в версии 2.2.1 все работает. Спасибо.
Ок, теперь понятно. Да, в 2.1 такое бы не прокатило. Я писал в блоге об исправлении.