Основной поток не завершается при закрытии программы

Основной поток не завершается при закрытии программы
Atom
17.05.2013
UsilaDobry


Доброго дня. Если запускаю проект, вывожу на график, а потом закрываю окно, то срабатывает безопасное отключение, основной поток останавливается. А вот если запускаю проект, потом запускаю стратегию и следом закрываю окно, или останавливаю стратегию, а потом закрываю окно, то основной поток не останавливается. Я добавил в основной код следующий раздел, но это не помогает...

protected override void OnClosing(CancelEventArgs e)
        {
            try
            {
                if (_levelSarStrategy != null)
                {
                    _levelSarStrategy.Stop();
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.ToString());
            }
            base.OnClosing(e);
        }

Что еще можно придумать?..


Теги:


Спасибо:


1 2  >
IvanB

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


UsilaDobry: Доброго дня. Если запускаю проект, вывожу на график, а потом закрываю окно, то срабатывает безопасное отключение, основной поток останавливается. А вот если запускаю проект, потом запускаю стратегию и следом закрываю окно, или останавливаю стратегию, а потом закрываю окно, то основной поток не останавливается. Я добавил в основной код следующий раздел, но это не помогает...

protected override void OnClosing(CancelEventArgs e)
        {
            try
            {
                if (_levelSarStrategy != null)
                {
                    _levelSarStrategy.Stop();
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.ToString());
            }
            base.OnClosing(e);
        }

Что еще можно придумать?..

Можно попробовать вызвать метод Dispose у стратегии при закрытии окна.

Спасибо: UsilaDobry

UsilaDobry

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


IvanB: Можно попробовать вызвать метод Dispose у стратегии при закрытии окна.

Добавил в этот код, первые два запуска нормально, потом опять перестал основной поток останавливаться.

protected override void OnClosing(CancelEventArgs e)
        {
            try
            {
                if (_levelSarStrategy != null)
                {
                    _levelSarStrategy.Stop();
                    _LevelSarStrategy.Dispose();
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.ToString());
            }
            base.OnClosing(e);
        }
Спасибо:

IvanB

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


UsilaDobry:

IvanB: Можно попробовать вызвать метод Dispose у стратегии при закрытии окна.

Добавил в этот код, первые два запуска нормально, потом опять перестал основной поток останавливаться.

protected override void OnClosing(CancelEventArgs e)
        {
            try
            {
                if (_levelSarStrategy != null)
                {
                    _levelSarStrategy.Stop();
                    _LevelSarStrategy.Dispose();
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.ToString());
            }
            base.OnClosing(e);
        }

Какие-то ресурсы не освобождаются ... В поиске проблемы может помочь ANTS Memory Profiler или dotTrace.

Спасибо: UsilaDobry

UsilaDobry

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


IvanB: В поиске проблемы может помочь ANTS Memory Profiler или dotTrace.

ANTS 495$, а dotTrace 599$...дешевле ничего нет? [blink] Вспомогательные программы, а стоят как студия...

Скачал ANTS триальную версию на 14 дней...теперь бы еще понять как ей пользоваться, я то в англицком ни бум-бум...

Спасибо:

IvanB

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


UsilaDobry: ANTS 495$, а dotTrace 599$...дешевле ничего нет? [blink] Вспомогательные программы, а стоят как студия...

Скачал ANTS триальную версию на 14 дней...теперь бы еще понять как ей пользоваться, я то в англицком ни бум-бум... Можете прислать проект, я по возможности, посмотрю.

Спасибо: UsilaDobry

casper-ss

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


Такая же проблема...замучился через диспетчер программ процесс убивать...как с ним бороться?весь код перепроверил, все равно после запуска стратегии висит процесс(редко бывает когда благополучно завершается, но бывает)...я так понял это баг библиотеки?

Спасибо:

Самунджян Артем

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


casper-ss: Такая же проблема...замучился через диспетчер программ процесс убивать...как с ним бороться?весь код перепроверил, все равно после запуска стратегии висит процесс(редко бывает когда благополучно завершается, но бывает)...я так понял это баг библиотеки? Это связано с потоком окна дополнительного (менеджер стратегий или логирование). Решается это следующим образом


//переопределяем метод закрытия основного окна
protected override void OnClosing(CancelEventArgs e)
		{//закрываем все дополнительные окна
                 //отключаем функцию "сложения при нажатии на крест"
                 _tradesWindow.DeleteHideable();
                 //окончательно закрываем окно
                 _tradesWindow.Close();
		}

До этого соответсвенно (к примеру в конструкторе основного окна):


public MainWindow()
		{
			InitializeComponent();
                 _tradesWindow.MakeHideable();
                }

По сути, что получается. Приложение ваше закрыватся (основное окно), но процесс не убивается. Из-за того что дополнительное окно как бы сложено (не путать с визуальным сложением). Чтобы основной процесс закрылся, нужно, чтобы все исходящие из него, аналогично были закончены.

Код, который я привел можно посмотреть в Samples/Quik/Sample. Там огромное количество дополнительных окон [biggrin]

Спасибо:

casper-ss

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


Самунджян Артем:

casper-ss: Такая же проблема...замучился через диспетчер программ процесс убивать...как с ним бороться?весь код перепроверил, все равно после запуска стратегии висит процесс(редко бывает когда благополучно завершается, но бывает)...я так понял это баг библиотеки? Это связано с потоком окна дополнительного (менеджер стратегий или логирование). Решается это следующим образом

//переопределяем метод закрытия основного окна protected override void OnClosing(CancelEventArgs e) {//закрываем все дополнительные окна //отключаем функцию "сложения при нажатии на крест" _tradesWindow.DeleteHideable(); //окончательно закрываем окно _tradesWindow.Close(); }

> До этого соответсвенно (к примеру в конструкторе основного окна):
> ```csharp

public MainWindow()
		{
			InitializeComponent();
                 _tradesWindow.MakeHideable();
                }

По сути, что получается. Приложение ваше закрыватся (основное окно), но процесс не убивается. Из-за того что дополнительное окно как бы сложено (не путать с визуальным сложением). Чтобы основной процесс закрылся, нужно, чтобы все исходящие из него, аналогично были закончены.

Код, который я привел можно посмотреть в Samples/Quik/Sample. Там огромное количество дополнительных окон [biggrin]

Неее...не из за этого...я это все сразу проверил...все окна закрываюся, причем с очередью закрытия тоже все в порядке...весит какой то другой процесс...и тот который связан со стратегией...потому что такая проблема возникает только после нажатия кнопки старт, и то не всегда, 3-4 раза процесс остается активным и 1 раз закрывается...вот так...

Спасибо:

Самунджян Артем

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


casper-ss: Неее...не из за этого...я это все сразу проверил...все окна закрываюся, причем с очередью закрытия тоже все в порядке...весит какой то другой процесс...и тот который связан со стратегией...потому что такая проблема возникает только после нажатия кнопки старт, и то не всегда, 3-4 раза процесс остается активным и 1 раз закрывается...вот так...

присылайте проект на lesson@stocksharp.com! Надеюсь ничего секретного в стратегии нет [biggrin]

Спасибо:

casper-ss

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


Самунджян Артем:

casper-ss: Неее...не из за этого...я это все сразу проверил...все окна закрываюся, причем с очередью закрытия тоже все в порядке...весит какой то другой процесс...и тот который связан со стратегией...потому что такая проблема возникает только после нажатия кнопки старт, и то не всегда, 3-4 раза процесс остается активным и 1 раз закрывается...вот так...

присылайте проект на lesson@stocksharp.com! Надеюсь ничего секретного в стратегии нет [biggrin]

Увы...есть...точнее не я один собственник идеи...:))))не могу ей распоряжаться один...:)

Спасибо:
1 2  >

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

loading
clippy