Фоновые темы не закрываются при закрытии программы? - PullRequest
2 голосов
/ 05 февраля 2010

У меня есть простая программа, в которой есть фоновые работники, и она работает без остановки, и, когда я ее закрываю, некоторые из них всегда будут работать (или все), и я заметил, что закрытие приложения не не убивай это полностью. После запуска несколько раз на вкладке процессов в диспетчере задач Windows остаются процессы (по 1 на каждый запуск).

Почему они остаются? что я для них не делаю?

ps .: Я читал вопросы о поведении фонового работника при закрытии приложения, но, полагаю, тогда он не работает так, как задумано. Есть предложения?

Ответы [ 2 ]

2 голосов
/ 05 февраля 2010

Лучший подход - остановить / убить поток с помощью события или пользовательского действия перед закрытием приложения.

как показано ниже

private void ButtonStopBGWorker_Click(object sender, RoutedEventArgs e)
{
 BackgroundWorker worker = sender as BackgroundWorker;
 if ((worker.CancellationPending == true))
   {
      e.Cancel = true;
      break;
   }
}

Этот пост на форуме даст вам больше понимания. Кроме того, ознакомьтесь с MSDN, чтобы узнать, как управлять потоками Backgroundworker

Надеюсь, это поможет

0 голосов
/ 05 февраля 2010

Это нити, которые ты сам себе раскручиваешь? Если вы создаете свои собственные потоки, я считаю, что вам нужно установить их в фоновые потоки, чтобы они заканчивались вместе с основным потоком. В противном случае они будут поддерживать процесс. Из памяти код для установки заданного потока в фоновом режиме выглядит примерно так:

Thread t = new Thread(YouStartMethod);
t.IsBackground = true;
t.Start();

Надеюсь, это поможет

...