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

Программа не завершается из-за фоновых потоков
Atom
2/16/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();

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


Tags:


Thanks:


Виктор

Avatar
Date: 2/17/2016
Reply


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

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

Thanks: Mikhail Sukhov


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

loading
clippy