0
Допустим, у меня есть поток, который ожидает пользователь, чтобы нажать на кнопку перед переходом:C# - Большинство ООП способ передачи данных между потоками
System.Threading.AutoResetEvent dialoguePause = new System.Threading.AutoResetEvent(false);
public void AskQuestion()
{
/* buttons containing choices created here */
dialoguePause.WaitOne();
/*Code that handles choice here */
}
public void Choice_Clicked(object sender, EventArgs e)
{
dialoguePause.Set();
}
Как я могу передать данные из потока Choice_Clicked находится на AskQuestion, не полагаясь на переменные класса? Лучшее, что я могу сделать это:
System.Threading.AutoResetEvent dialoguePause = new System.Threading.AutoResetEvent(false);
string mostRecentChoice;
public void AskQuestion()
{
/* buttons containing choices created here */
dialoguePause.WaitOne();
MessageBox.Show("You chose " + mostRecentChoice + ".");
}
public void Choice_Clicked(object sender, EventArgs e)
{
mostRecentChoice = (sender as Button).Content.ToString(); //Ugly!
dialoguePause.Set();
}
Не используйте потоки, используйте шаблон Async задачи (async/await). Только запускайте новые потоки для длительных операций с привязкой к процессору. –