我从 2009 年开始研究这些问题: C# Events and Thread Safety
我还查看了 Eric Lippert 关于同一主题的博客文章:http: //blogs.msdn.com/ericlippert/archive/2009/04/29/events-and-races.aspx
问题似乎归结为,在多线程环境中,您偶尔会遇到不同线程取消注册线程(线程 A)“if”语句和“调用委托”语句之间的委托的情况。
当我阅读时,我想到了这个问题:如果替代品似乎是在竞争条件或抛出异常之间进行选择,那么为什么不将它包装在 try/catch 块中而不用担心呢?如果您捕获了 nullReferenceException,只需在 catch 块中忽略它(只是为了抑制异常)并继续前进。
现在,我了解 Eric Lippert 和 John Skeet 对 C#、多线程和委托有一点了解,所以有人可以花点时间解释一下我在这里缺少什么吗?