【发布时间】:2015-07-28 17:05:47
【问题描述】:
假设一个模型异步触发事件(即不是从 UI 线程)。由于此模型可以访问 DAQ 卡并执行时间紧迫的任务,因此事件处理程序不要阻塞/花费很长时间来处理事件,这一点很重要。
总结一下:
- 事件处理程序在处理事件时不应阻塞
- 由于事件不是从 UI 线程触发的,因此它们需要委托给 UI 线程
现在我创建了一个使用视图的Dispatcher 和BeginInvoke 的视图模型。在下面的代码中,我尝试更改 UI 可以在其上创建数据绑定的属性 IsEmergencyButtonActive:
void board_EmergencyButtonEvent(object sender, EventArgs e, bool state)
{
uiDispatcher.BeginInvoke((Action)(() => {
IsEmergencyButtonActive = state;
// Perform other time consuming tasks ...
}));
}
这是“要走的路”吗?有没有更好的方法来解决这个任务?
【问题讨论】:
标签: c# multithreading