在.net中安全调用事件的简明方法

本文关键字:方法 事件 调用 net 安全 | 更新日期: 2023-09-27 17:52:33

是否有一种简洁的方法来安全地调用c# . net中的事件?我想安全地处理没有订阅者和订阅者可能抛出的异常…

我有点想要一个TryInvoke方法上的委托..理想情况下,我可以传递一个异常处理程序。我是在。net 3.5中,所以没有扩展方法…

无论如何,这是我通常使用的样板文件。

    void fireListChanged(List<string> paths)
    {             
        try
        {
            if (ListChanged != null)
            {
                ListChanged(paths);
            }
        }
        catch (System.Exception ex)
        {
            m_output.write(ex);
        }
    }
    public event ListStringChangedDlgt ListChanged;

在.net中安全调用事件的简明方法

只使用= delegate {}模式。与您的解决方案相比,它的好处是线程安全。

void fireListChanged(List<string> paths)
{             
    try
    {
            ListChanged(paths);
    }
    catch (System.Exception ex)
    {
        m_output.write(ex);
    }
}
public event ListStringChangedDlgt ListChanged = delegate {};

我还建议您使用EventHandlerEventHandler<YourEventArgClass>作为事件的委托。