我有两个课程MainWindow
和Foo
,考虑到时间安排时遇到一些问题:
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
之前被调用。
我想到了一个可能的解决方案,只是不添加初始化程序,但有一个单独的方法,只需在添加事件后调用那个,但一般来说,有没有办法在调用初始化程序之前添加事件?
答案 0 :(得分:3)
你以前做不到,但你可以把它作为构造函数的一部分。只需将处理程序作为参数传递。
然而,这非常难看。拥有生成线程的构造函数并不好,使用“开始”方法
要好得多