public void threadMethod()
{
try
{
// do something
}
catch (ThreadInterruptedException e)
{
Console.WriteLine("[Net]", role, "Thread interrupted.");
n.CloseConnection();
}
finally
{
if (isAutenticated == false)
{
n.CloseConnection();
}
Dispatcher.Invoke(addMessage, "Network connection searching was disabled.");
DebuggerIX.WriteLine("[Net]", role, "Finished");
Dispatcher.Invoke(threadStoppedDel);
}
}
Метод threadMethod выполняется через Систему. Поточная обработка. Поток. Поток может быть прерван каждый раз, когда поэтому исключение ThreadInterruptedException может быть добавлено наконец блок, правильно? Я должен включить блок в наконец в выгоде попытки снова?
Спасибо!
Исключение прерывания потока создается, когда поток прерывается путем ручного вызова Thread.Interrupt . Сама Windows не будет прерывать ваш поток с помощью этого метода. Как правило, ваша программа будет контролировать, когда поток отправляет сигнал прерывания (не всегда). Поскольку сигнал прерывания может использоваться для некоторого управления потоком, он обычно не отправляется дважды в быстрой последовательности.
ThreadInterruptedException создается в прерванном потоке, но не раньше, чем поток блокируется. Если поток никогда не блокируется, исключение никогда не создается, и, таким образом, поток может завершиться без прерывания.
Если ваш поток никогда не засыпает и не ожидает других объектов (переходя в состояние WaitSleepJoin), вы никогда не увидите сгенерированного исключения.
Защита вашей нити должна быть приемлемой. Не забывайте, что исключение ThreadAbortException также может быть выброшено, и оно немного более распространено и может генерироваться чаще (приложение завершает работу и т. Д.).