那么这里是委托和事件。
public delegate Task SomeEventHandler(SomeEventArgs e);
...
public event SomeEventHandler OnSomething;
订阅者(多个)
some.OnSomething += DoSomething;
...
public async Task DoSomething(SomeEventArgs e) {
await SomethingElse();
e.A = true;
}
事件调用
if (this.OnSomething != null)
await this.OnSomething(args);
// Here args.A is false
// It should be true
问题在于即使DoSomething没有完成,最后部分仍然会继续。问题出在哪里?
问题在于即使DoSomething没有完成,最后部分仍然会继续。问题出在哪里?
void
委托,并且您不应该依赖它们被触发的顺序。对于这种逻辑,您最好使用自定义类。 - noseratio - open to workasync
events博客文章中有更多细节。 - Stephen Cleary