2015-12-04 5 views
-1

Здравствуйте. Можете ли вы мне помочь? Мне нужно сделать нить спящего режима нажатием кнопки и продолжить эту нить, нажав кнопку1. Я имею дело с WPF, и когда я вызываю метод WaitOne() в событии button1_click, моя форма становится зависающей, и я не могу нажать любую кнопку. вот пример моего кода:Остановить и продолжить нить при нажатии кнопки

AutoResetEvent objAuto = new AutoResetEvent(false); 
    private void Button_Click(object sender, RoutedEventArgs e) 
    { 

     if (thread != null) 

     { 

      objAuto.Set(); 
     } 
     thread = new Thread(new ThreadStart(zoo.FeedAnimals)); 
      thread.Start(); 
} 

private void Button_Click_1(object sender, RoutedEventArgs e) 
    {   
     objAuto.WaitOne(); 
    } 

Спасибо за заранее

+0

Укажите, пожалуйста, на каком языке вы владеете. Для меня это похоже на C#. –

ответ

1

Причины, почему она замерзает, потому что вы называете WaitOne в потоке пользовательского интерфейса. Вы, вероятно, хотите что-то по линиям

AutoResetEvent objAuto = new AutoResetEvent(false); 
private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    thread = new Thread(new ThreadStart(zoo.FeedAnimals)); 
    thread.Start(); 
} 

private void Button_Click_1(object sender, RoutedEventArgs e) 
{  
    if (thread != null) 
    { 
     objAuto.Set(); // this is in the main UI thread 
    }  
} 

public void FeedAnimals() 
{ 
    ... 
    objAuto.WaitOne(); // this blocks your other thread 
    ... 
}