Интересно ни кто не сталкивался с проблемой, после закрытия программы оставались фоновые потоки, которые не дают завершиться программе. Проблема с завершением программы возникает после создания окна с графиком 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();
Остается только скриптом убивать процесс в диспетчере задач.
Kommentare (1)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Может кому пригодится. Помогло только чудесно сочетание при завершении программы: protected override void OnClosing(CancelEventArgs e) { foreach (var pair in _chartWindows) { pair.Value.DeleteHideable(); pair.Value.Close(); } .... }
т.е. [window].DeleteHideable() перед закрытием окна нужно обязательно произвести.