我想要两个线程。我们称他们为:
- 线程 A
- 线程 B
线程 A 触发一个事件,线程 B 监听这个事件。 当线程 B 事件监听器被执行时,它是用线程 A 的线程 ID 执行的,所以我猜它是在线程 A 中执行的。
我想做的是能够向线程 B 触发事件,说类似这样的话:“嘿,数据已经为您准备好了,您现在可以处理它了”。这个事件必须在它自己的线程中执行,因为它使用只有他可以访问的东西(比如 UI 控件)。
我该怎么做?
谢谢你的帮助。
最佳答案
您需要将信息编码回 UI 线程。
通常,您会在事件处理程序中处理它。例如,假设线程 A 是您的 UI 线程 - 当它订阅线程 B 中的对象上的事件时,事件处理程序将在线程 B 中运行。但是,它可以将其编码回 UI 线程:
// In Thread A (UI) class...
private void myThreadBObject_EventHandler(object sender, EventArgs e)
{
this.button1.BeginInvoke( new Action(
() =>
{
// Put your "work" here, and it will happen on the UI thread...
}));
}
关于在自己的线程中执行的线程之间的 C# 事件(如何)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2403972/