NET CF上的线程安全调用
我有一个运行后台线程来触发事件,但是如何使用NET CF确保线程安全地调用这些事件?
我会在.NET平台上使用ISyncronizeInvoke,但我在NET CF上找不到这个。 我确定有一个等效的….或?
Compact Framework 确实有Control.Invoke
/ BeginInvoke
,虽然我认为它仅限于EventHandler
委托(任何其他委托在执行时抛出exception)。
假设您的实际 ISynchronizeInvoke
实例将是一个UI控件,我只需将引用作为Control
传递给任何需要它的东西。 如果你真的想使用一个接口,你总是可以创建自己的ISynchronizeInvoke
接口,然后创建一个只包含Control
的实现。
是的,它在.NET CF中可用,以下是这样一个项目的摘录:
从另一个线程调用SampleMethod() 。
delegate void SimpleInvokeDelegate(); private void SampleMethod() { if (InvokeRequired) { Invoke(new SimpleInvokeDelegate(SampleMethod)); } else { // Update UI elements here. } }