如果一个非gui对象的构造函数将本地事件处理方法连接到不同线程上的对象的事件字段,是否可以在构造函数完成之前调用该事件处理方法?
示例:(仅限语义伪代码)
public static B b = new B();
class A
{
public A()
{
b.evt += EventHandler();
Thread.Sleep(5000);
}
protected void EventHandler()
{
// Some stuff
}
}
class B
{
public event evt;
public void ThreadedLoop()
{
while (true)
{
RaiseEvt();
}
}
}
最佳答案
是的,因为事件处理方法是在另一个线程的上下文中调用的。
在您的示例中,事件处理程序是类 A 的一个方法,但是当它被调用时,它是在类 B 表示的线程的上下文中调用的。当执行类 A 的构造函数的线程休眠时,由类表示的线程B 类将开始工作,引发事件并在此过程中调用事件处理程序。
关于c# - 在构造函数中连接线程 C# 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1640852/