在调用初始化器之前添加事件处理程序
本文关键字:添加 事件处理 程序 调用 初始化 | 更新日期: 2023-09-27 18:31:27
我有两个类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
初始化的线程需要多长时间,并且在添加MyEventHandler
之前可能会调用FooMethod();
线程。
我想到了一个可能的解决方案,简单地不添加初始值设定项,而是有一个单独的方法,并在添加事件后简单地调用该方法,但总的来说,有没有办法在调用初始值设定项之前添加事件?
以前
你不能这样做,但你可以作为构造函数的一部分来做。只需将处理程序作为参数传入即可。
然而,这很丑陋。 拥有生成线程的构造函数并不好,最好使用"Start"方法