在调用初始化器之前添加事件处理程序

本文关键字:添加 事件处理 程序 调用 初始化 | 更新日期: 2023-09-27 18:31:27

我有两个类MainWindowFoo,考虑到时间问题:

class MainWindow : Window
{
    internal void SomeMethod(string name)
    {
        Foo foo = new foo(name)
        foo.MyEventHandler += EventHandlerMethod;
    }
    internal void EventHandlerMethod(object sender, EventArgs e)
    {
        //do something after foo is done initializing stuff
    }
}
class Foo
{
    internal event EventHandler MyEventHandler;
    internal Foo(string name)
    {
        //start another thread that will at some point via event call FooMethod()
    }
    private void FooMethod()
    {
        MyEventHandler(this, null);
    }
}

问题是我无法保证Foo初始化的线程需要多长时间,并且在添加MyEventHandler之前可能会调用FooMethod();线程。

我想到了一个可能的解决方案,简单地不添加初始值设定项,而是有一个单独的方法,并在添加事件后简单地调用该方法,但总的来说,有没有办法在调用初始值设定项之前添加事件?

在调用初始化器之前添加事件处理程序

以前

你不能这样做,但你可以作为构造函数的一部分来做。只需将处理程序作为参数传入即可。

然而,这很丑陋。 拥有生成线程的构造函数并不好,最好使用"Start"方法