Общие ошибки
Atom
13.01.2012
Daenur


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

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

Код

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

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

error.png 65 KB (280)

Теги:


Спасибо:


< 1 2 
Daenur

Фотография
Дата: 15.01.2012
Ответить


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

Alexander

Фотография
Дата: 15.01.2012
Ответить


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

Daenur

Фотография
Дата: 16.01.2012
Ответить


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

Код

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


StackTrace:
Код

"   в 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()"
Спасибо:

Alexander

Фотография
Дата: 16.01.2012
Ответить


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

Daenur

Фотография
Дата: 16.01.2012
Ответить


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

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

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

Alexander

Фотография
Дата: 16.01.2012
Ответить


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


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

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

Daenur

Фотография
Дата: 16.01.2012
Ответить


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

Код

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

	GC.Collect();
	GC.WaitForPendingFinalizers();
	GC.Collect();
}
Спасибо:

Mikhail Sukhov

Фотография
Дата: 16.01.2012
Ответить


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


Dispose
Спасибо:

Daenur

Фотография
Дата: 16.01.2012
Ответить


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

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy