c# - 在构造函数中连接线程 C# 事件

标签 c# multithreading events constructor

如果一个非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/

相关文章:

c# - UWP 未处理的异常仅在 Release模式下

multithreading - 我如何在 Delphi 中进行线程处理的各种方法之间进行选择?

javascript - 需要制作一个 javascript 数组来讲述一个故事

android - 为什么无法使用 EventBus 注册 Activity ?

c# - 让页面读取从另一个页面发布到它的值的最佳方法是什么?

c# - 无法确定复合主键oracle db错误消息如何解决?

c# - 有没有办法知道来电者的程序名称?

Python 关闭 TCP 连接

c# - 防止表格卡住

java - 创建一个带有 Swing 提交按钮的表单面板