【发布时间】:2013-09-26 14:42:31
【问题描述】:
我有两个非 UI 线程。
- 线程 A
- 线程 B
线程 A 引发一个事件,线程 B 监听这个事件。当线程 B 事件监听器被执行时,它在线程 A 上执行(我认为,因为线程 A 引发了事件)。
我想做的是,能够在线程 A 上引发事件,如果线程 B 正在侦听,则侦听器应该在线程 B 上执行。
类似这样的:
private void SomeMethodOnThreadA()
{
synchronizationContextOfThreadB.Send(new SendOrPostCallback(o =>
{
EventXy(this, new EventArgs());
}), null);
}
但这不起作用,因为我的线程是非 UI 线程。
【问题讨论】:
-
线程 B 是如何“监听”的?
-
@ScottChamberlain 线程 B 正在监听一个从线程 A 引发的事件
-
@AntarrByrd 一个事件是一个委托。
-
@Gusdor 你说得对,我会把它归咎于早上的时间 :)
-
你的想法是对的。但是,
synchronizationContextOfThreadB来自哪里?
标签: c# .net multithreading events thread-synchronization