事件处理程序与使用委托

时间:2011-12-14 21:21:13

标签: c# multithreading singleton

我有一个单独的,我在一堆不同的线程中分享。有时一个线程需要与另一个线程进行通信。

我在考虑两种方法:

每个线程都将一个委托放在单例中。当需要时间时,一个线程调用单例中的一个函数,该函数调用单例中的另一个委托,通知每个线程做某事。

另一种选择是使用标准的事件处理机制。

使用其中一种是否有益处?

2 个答案:

答案 0 :(得分:4)

无论哪个线程使用单例注册了委托(或者向单例添加了事件,都无关紧要),通知将在通知线程的上下文中发生。

如果您需要使一个线程按照另一个线程的指示执行操作,则需要将该意图与数据进行通信。例如,每个线程都可以设置阻塞队列,并等待其他人将项目推送到队列中。这些项可以是在执行操作之前需要解释的委托,对象或纯数据项。重要的是,为了在线程中执行操作,线程本身必须执行该操作。

答案 1 :(得分:3)

标准的事件系统对你来说会更好,如果这是你想要的(听起来像它),你为什么要重新发明轮子?

我认为标准事件对于查看代码的人来说会更加熟悉,我猜它会更高效。这是一个问题吗?你试过进行性能测试吗?