NET CF上的线程安全调用

时间:2009-09-05 13:04:59

标签: c# .net multithreading compact-framework

我有一个运行后台线程来触发事件,但是如何使用NET CF确保线程安全地调用这些事件?

我会在.NET平台上使用ISyncronizeInvoke,但我在NET CF上找不到这个。我确定有一个等效的......或者?

2 个答案:

答案 0 :(得分:7)

Compact Framework 确实Control.Invoke / BeginInvoke,但我认为它仅限于EventHandler委托(任何其他委托在执行时抛出异常)时间)。

假设您的实际实例ISynchronizeInvoke将成为UI控件,我只需将引用作为Control传递给任何需要它的人。如果确实想要使用界面,您可以随时创建自己的ISynchronizeInvoke界面,然后创建一个仅包装Control的实现。

答案 1 :(得分:4)

是的,它在.NET CF中可用,以下是这样一个项目的摘录: 从另一个线程调用 SampleMethod()

delegate void SimpleInvokeDelegate();
private void SampleMethod()
{
    if (InvokeRequired)
    {
        Invoke(new SimpleInvokeDelegate(SampleMethod));
    }
    else
    {
       // Update UI elements here.
    }
}