Программа не завершается из-за фоновых потоков

Программа не завершается из-за фоновых потоков
Atom
16.02.2016
Виктор


Интересно ни кто не сталкивался с проблемой, после закрытия программы оставались фоновые потоки, которые не дают завершиться программе. Проблема с завершением программы возникает после создания окна с графиком work_wnd = new ChartWindow { Title = "{0} {1} {2}".Put(work_series.Security.Code,work_series.CandleType.Name, work_series.Arg)}; создавал также окно через _chartWindows.SafeAdd(work_series, key => .show(); результат тот же.

В отладчике прерывал фоновый поток, который всегда останавливается на: StockSharp.Messages.InMemoryMessageChannel, класс BlockingPriorityQueue, public void Open() ThreadingHelper .Thread(() => CultureInfo.InvariantCulture.DoInCulture(() => {while (!_messageQueue.IsClosed) }.

Так понимаю, чтобы завершить этот поток нужно вызвать public void Close() {_messageQueue.Close();}

Пробовал и work_wnd.Close(); work_wnd.DoDispose(); this.Close(); this.DoDispose(); Отписывался от всех событий и Trader.Dispose();

Остается только скриптом убивать процесс в диспетчере задач.


Теги:


Спасибо:


Виктор

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


Может кому пригодится. Помогло только чудесно сочетание при завершении программы: protected override void OnClosing(CancelEventArgs e) { foreach (var pair in _chartWindows) { pair.Value.DeleteHideable(); pair.Value.Close(); } .... }

т.е. [window].DeleteHideable() перед закрытием окна нужно обязательно произвести.

Спасибо: Mikhail Sukhov


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

loading
clippy