我需要在UI线程中引发事件,我发现的所有解决方案都只用于完整框架:例如使用GetInvocationList和ISynchronizeInvoke的非常简单的解决方案,但NET CF不支持ISynchronizeInvoke。有什么办法在UI线程中为CF引发事件吗?我的代码如下。我使用.NET CF 3.5在UI线程中引发事件
class Publisher {
public event EventHandler OnEventHandler;
private void OnEvent()
{
var handler = OnEventHandler;
if (handler != null) handler(this, EventArgs.Empty);
}
}
你必须通过构造函数传递控制基准,所以你可以使用它的invoke()方法引发事件。事件订阅者处理它肯定比较容易。 –
是的,我了解控件引用,但我不喜欢这种情况,因为Publisher对UI,控件等一无所知。另外,视图可能在创建Publisher后创建。 – wince
对,它调用了“它当然更容易”的条款。这并非前所未有的,例如,SerialPort在另一个线程上引发事件。 –