新手如何使用c#threading处理在另一个线程上引发的事件

时间:2013-05-11 09:51:39

标签: c# multithreading thread-safety

假设我有2个线程 - 线程A和线程B.我在线程A上注册一个事件并从线程B调用它。该事件将在哪个线程上执行?

当上述情况不适用时,是否有任何特殊情况?

如何在不使用任何锁的情况下使类线程安全。

提前致谢

1 个答案:

答案 0 :(得分:4)

除非您采取一些明确的操作,否则会在引发事件的线程上调用事件处理程序。通常“引发事件”是只是调用委托的问题,这是同一线程上的同步操作。

  

如何在不使用任何锁的情况下使类线程安全。

我们没有几乎足够的信息来回答这个问题,理想情况下它会处于一个不同的问题。但在问这个单独的问题之前,你应该问自己“线程安全”是什么意思 - 这对不同的人来说意味着很多不同的事情。有关详细信息,请参阅Eric Lippert's blog post on the topic

(特别是如果您正在考虑事件,请考虑一个线程订阅或取消订阅事件的可能性 - 您需要发生什么?)