Общие ошибки

Общие ошибки
Atom
1/13/2012
Daenur


Не хватает ветки форума, куда можно было бы писать об ошибках, не попадающих ни в одну из текущих категорий. Вот сейчас даже не знаю, куда было бы правильно сообщить об обнаруженной проблеме. Напишу сюда.

Обновился до последней версии. Такой код перестал работать:

Code

candleToken = candleManager.RegisterVolumeCandles(this.SelectedSecurity, 10000);

IEnumerable<Candle> tmpCandles = candleManager.GetVolumeCandles(this.SelectedSecurity, 10000);

error.png 65 KB (280)

Tags:


Thanks:


< 1 2 
Daenur

Avatar
Date: 1/15/2012
Reply


Все ясно, спасибо.
Thanks:

Alexander

Avatar
Date: 1/15/2012
Reply


Кстати, я там релиз уже выпустил с этим фиксом - 4.0.16 :)
Thanks:

Daenur

Avatar
Date: 1/16/2012
Reply


Еще одна ошибка обнаружилась - если создать два раза QuikTrader, то на второй строке возникает ошибка "Элемент с тем же ключом уже был добавлен."

Code

QuikTrader qt = new QuikTrader();
QuikTrader qt1 = new QuikTrader(); 


StackTrace:
Code

"   в System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)\r\n   в System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)\r\n   в NDde.Advanced.DdeContext.DdeThread.Invoke(Delegate method, Object[] args)\r\n   в NDde.Advanced.DdeContext.Invoke(Delegate method, Object[] args)\r\n   в NDde.Advanced.DdeContext.Invoke(ThreadStart method)\r\n   в NDde.Server.DdeServer.Register()\r\n   в #=qLnhEF5Z48wRQ9u$AmcVUfEQZSUm6BLPcSO2O2yUGaXk=.#=qmkIiuhBdYh6_e2VQ9e6kVXycuGcKpHLIr5Z$LIgROwI=.#=qzPHdg7XAZqW0YyxFfJTwcw==()\r\n   в Ecng.Common.ThreadingHelper.<>c__DisplayClass10.<Thread>b__f()\r\n   в System.Threading.ThreadHelper.ThreadStart_Context(Object state)\r\n   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)\r\n   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n   в System.Threading.ThreadHelper.ThreadStart()"
Thanks:

Alexander

Avatar
Date: 1/16/2012
Reply


Это не ошибка. Нельзя создать 2 QuikTrader с одним и тем же именем DDE сервера и Transaq2Quik библиотеки.
Передавайте в конструктор разные параметры.
Thanks:

Daenur

Avatar
Date: 1/16/2012
Reply


Ок, а как тогда убить первый, чтоб создать потом второй?

Я создаю QuikTrader или SmartTrader в диалоговом окне, оно каждый раз создается заново, как понимаете. Допустим, сначала создал QuikTrader. Потом - SmartTrader (и в главном окне использовал уже его), на QuikTrader уже ссылок не осталось живых. Потом заново пытаюсь создать QuikTrader, и тут валится ошибка.

Несколько непривычно получать ошибку при создании нового объекта класса, с учетом того, что ссылка на старый давно не существует.
Thanks:

Alexander

Avatar
Date: 1/16/2012
Reply


Daenur
Несколько непривычно получать ошибку при создании нового объекта класса, с учетом того, что ссылка на старый давно не существует.


Вы уверены что экспорт остановлен и GC (garbage collector) успешно сработал?
Как это проверяется и выполняется?

Правильная работа одновременно с несколькими терминалами показана в документации и в примерах.
Thanks:

Daenur

Avatar
Date: 1/16/2012
Reply


Экспорт мог и не начинаться. Отдельного вызова GC тоже было недостаточно. Получилось избавиться от проблемы путем небольшого рефакторинга и ручного вычищения старого объекта. И только после этого можно создавать новый, не получая ошибку.

Code

if (this.trader != null)
{
	trader.Dispose();

	GC.Collect();
	GC.WaitForPendingFinalizers();
	GC.Collect();
}
Thanks:

Mikhail Sukhov

Avatar
Date: 1/16/2012
Reply


Daenur
Ок, а как тогда убить первый, чтоб создать потом второй?


Dispose
Thanks:

Daenur

Avatar
Date: 1/16/2012
Reply


Да, это понятно. Просто сначала подумал, что при создании что-то куда-то пишется или сохраняется, и потом когда новый объект создается, запись уже существует, вот и не может создаться заново. Поэтому и спрашивал про метод для очистки вероятных записей в каком-нибудь хранилище. Про очевидный вариант подумал во вторую очередь. :)
Thanks:
< 1 2 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy