2

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

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

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

+0

мне нужно спросить: вы действительно используете BackgroundWorker в одиночку, или вы также создать некоторые «ручные» темы? Если да, то ручные потоки ('new Thread()') должны иметь 'IsBackground = true;' –

+0

Я только что проверил его, прежде чем вы его попросите, я использовал обычные потоки, прежде чем начать использовать backgroundworker, и теперь я посмотрел, 't пропустил кого-нибудь еще в коде, и нет, нет нормальных потоков, и когда я их использовал, они были IsBackground = true; – Marcelo

ответ

2

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

как следующий

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

Это сообщение at the forum will дать вам больше понимания. Кроме того, посмотрите на MSDN для получения подробной информации о том, как управлять Backgroundworker Threads

Надеются, что это помогает

0

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

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

Надеется, что это помогает

+0

Нет, это потоки рабочего стола (я не уверен, что могу сказать это так, извините) Я сам не начинаю темы. – Marcelo

 Смежные вопросы

  • Нет связанных вопросов^_^