Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Выключение компа и завершение программы.


Автор: vlsaf 14.8.2009, 17:59
Всем привет.

Есть программа, использующая потоки.
Если она запущена, то выключить комп не удается.
Комп говорит, что есть незавершенные процессы.

Вопрос.
Как программе узнать, что комп выключается, чтобы она позавершала свои потоки?

Заранее спасибо за ответы.

Автор: FEV 14.8.2009, 20:21
Environment.HasShutdownStarted

Автор: vlsaf 14.8.2009, 21:54
Что-то не выходит каменный цветок.

При инициализации формы подписываюсь на событие

Код

public Form1()
{
   ....
   // Если выключаем комп
   Microsoft.Win32.SystemEvents.SessionEnding += new Microsoft.Win32.SessionEndingEventHandler(App_SessionEnding); 
}


и сам обработчик
Код

        void App_SessionEnding(object sender, Microsoft.Win32.SessionEndingEventArgs e)
        {
            if (e.Reason == Microsoft.Win32.SessionEndReasons.Logoff ||
                e.Reason == Microsoft.Win32.SessionEndReasons.SystemShutdown)
            {
                #region принудительно завершаю выполнение потока
                 ... 
                 ...
                #endregion

                flag_Exit = true;
                Application.Exit();

                e.Cancel = false;
            }
        }


что не так делаю? Может не в том месте на него подписываюсь? Или не там или не так обрабатываю?

Причем самое противное во всем этом, не могу через отладчик прогнать. Нужно или logoff делать или комп выключать. Ну и студия соответственно закрывается.

Автор: mihryak 15.8.2009, 11:47
выставь потокам свойство IsBackground в true, тогда при закрытии приложения системой потоки с таким свойством сами умрут

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)