C# - прервать зацикливание потока
У меня есть потоки, которые отображают данные путем зацикливания на определенный интервал с помощью Thread.Sleep.
public class myThread{
public void threadPBAPI()
{
for (int i = 0; i < _PBAPI.Length; i++)
{
try
{
Console.writeLine();
Thread.Sleep(_interval * 1000);
}
catch (NullReferenceException)
{
}
}
}
}
Я хочу прервать остановку этого действия, потому что, когда я нажимаю кнопку, загружается новый набор данных, и я хочу выполнить это же действие с самого начала.
Я пытался сделать Thread.Abort(); на событие нажатия кнопки. но он не выбрасывал исключение ThreadAbortException.
при выполнении Thread.Join(); после Thread.Abort(); он генерирует исключение ThreadStateException "Поток не был запущен", когда поток выполняет действия, которые он должен был выполнить.
1 ответ
Решение
Это сработало для меня:
установить глобальный логический флаг -
isThreadAbort = false.
Когда это правда, вы можете использовать
break;
или же
i = _PBAPI.Length