【发布时间】:2014-06-20 15:34:02
【问题描述】:
Timer timer = new Timer();
BackgroundWorker bw = new BackgroundWorker();
EventHandler HandleStuff = delegate { MessageBox.Show("HandleStuff called"); };
timer.Tick += HandleStuff;
bw.RunWorkerCompleted += HandleStuff;
最后一行是不允许的,因为:
无法将类型“System.EventHandler”隐式转换为“System.ComponentModel.RunWorkerCompletedEventHandler”
2 个问题: 为什么 RunWorkerCompleted 不能接受常规的 EventHandler - 完成的事件不是多线程的,是否存在此限制的原因?
更重要的是,是否有解决办法来实现这一点?我想对Timer.Tick 和bw.RunWorkerCompleted 使用相同的处理程序
【问题讨论】:
-
1 ) 然后用除了 args (sender, args) => { MessageBox ....}; 2)同样的确切原因。 3) -1
-
那个 msdn 页面确实解释了为什么我不能使用常规事件处理程序(因为它需要处理程序来接受 RunWorkerCompletedEventArgs),但是它根本没有解决我的第二个问题。
标签: c# delegates backgroundworker eventhandler