【发布时间】:2013-03-04 19:57:34
【问题描述】:
我有一个带有事件处理程序的 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();
}
}
请解释一下这种行为,我该如何解决?
【问题讨论】:
-
也许你的文本框在你进入你的活动时没有初始化?
-
去掉那一行是什么意思?显示消息框?如果删除该行,预期的行为是文本框不会改变,所以正常工作意味着什么都不做?
-
它应该抛出(在调试模式下)。交叉线程和所有这些。您真正的问题似乎是默默地忽略异常。
-
@evanmcdonnal 它将每 0.5 秒显示一次消息
-
@mlemay 文本框没问题,我可以从其他地方更改它的文本,例如来自 Button_Click_1
标签: c# .net wpf multithreading events