2016-05-08 4 views
0

У меня есть потоки, которые отображают данные путем циклического перехода на определенный интервал с помощью Thread.Sleep.C# - Прервать нить цикла

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(); на кнопке Click event. , но он не выбрасывал ThreadAbortException.

сверху производство Thread.Join(); после Thread.Abort(); он бросает ThreadStateException «Thread не был запущен», когда поток выполняет действия, которые он должен выполнять.

+1

Спасибо. Я решил это, используя глобальный логический флаг и используя break, когда флаг был установлен в true нажатием кнопки. – DazedNConfused

ответ

2

это работало для меня:

установить глобальный логический флаг -

isThreadAbort = false. 

Когда его так, вы можете использовать

break; 

или

i = _PBAPI.Length 
+0

Вы имеете в виду, проверяя глобальное логическое значение? – DazedNConfused

+0

с помощью Thread.Abort() вы останавливаете поток, а не цикл for, используя break; или i = _PBAPI.Length теперь вы останавливаете цикл for –

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