首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程安全事件处理

线程安全事件处理
EN

Stack Overflow用户
提问于 2011-10-11 12:05:45
回答 2查看 744关注 0票数 0

可能重复:

Checking for null before event dispatching… thread safe?

Raise event thread safely - best practice

代码语言:javascript
复制
protected void NotificationEvent(Object sender, EventArgs e)
{
    // Copy to a temporary variable to be thread-safe
    EventHandler<EventArgs> tmp = mNotification;
    if (tmp!= null)
    {
        tmp(this, null);
    }
}

复制mNotification如何使其线程安全。有人能解释一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-11 12:10:29

如果是

代码语言:javascript
复制
if (mNotification!=null)
{
    mNotification(this, null);
}

mNotification可以通过if (mNotification!=null)mNotification(this, null);之间的另一个线程设置为null。

票数 3
EN

Stack Overflow用户

发布于 2011-10-11 12:12:38

它所做的是在特定时刻复制对原始事件的引用,以便如果它随后在空检查之后使用,它将指向不计算为null的引用。如果不使用此模式,则可以检查它是否为空,所有处理程序都可以在另一个线程上取消订阅,那么在调用该事件时事件将为空。复制原始引用消除了这个潜在的线程问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7725766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档