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

时间:2013-09-15 20:51:16

标签: c# wpf event-handling initializer

我有两个课程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 - 初始化线程需要多长时间,FooMethod();可能会在添加MyEventHandler之前被调用。

我想到了一个可能的解决方案,只是不添加初始化程序,但有一个单独的方法,只需在添加事件后调用那个,但一般来说,有没有办法在调用初始化程序之前添加事件?

1 个答案:

答案 0 :(得分:3)

你以前做不到,但你可以把它作为构造函数的一部分。只需将处理程序作为参数传递。

然而,这非常难看。拥有生成线程的构造函数并不好,使用“开始”方法

要好得多