0

我有两节课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-initialized 线程将花费多长时间并且FooMethod();可能在MyEventHandler添加之前被调用。

我想到了一种可能的解决方案,即不添加初始化程序,而是使用单独的方法,并在添加事件后简单地调用该方法,但一般来说,有没有办法在调用初始化程序之前添加事件?

4

1 回答 1

3

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

但是,这非常难看。拥有生成线程的构造函数并不好,拥有“开始”方法要好得多

于 2013-09-15T21:10:53.803 回答