我有一个带有eventhandler的MainWindow,它无法正常工作。我已经提出了这个问题的简单模型。请参阅代码注释中的问题是:事件不能正确提升
public partial class MainWindow : Window
{
public event EventHandler Event1;
public MainWindow()
{
Event1 += MainWindow_Event1;
InitializeComponent();
}
void MainWindow_Event1(object sender, EventArgs e)
{
textBox1.Text = "wth!?"; //Not changing text box. Not showing message. If delete this line, it will work fine
MessageBox.Show("raised");
}
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
EventHandler evt = Event1;
while (true)
{
Thread.Sleep(500);
evt(null, null);
}
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += bw_DoWork;
bw.RunWorkerAsync();
}
}
请解释这种行为,我该如何解决它?
也许当你进入你的事件时,你的文本框没有被初始化? – mlemay 2013-03-04 20:00:37
你是什么意思,它工作正常,如果你删除该行? MessageBox显示?如果删除该行,预期的行为是文本框不会更改,那么工作正常意味着什么都不做? – evanmcdonnal 2013-03-04 20:00:57
它应该抛出(在调试模式下)。跨线程和所有这一切。你真正的问题似乎是默默无视例外。 – 2013-03-04 20:01:29