措施1 触发Event1 事件2 按此顺序。
Action2也会触发Event2。
我需要在触发Event1并完成后执行一个方法。
我如何在C#/ .NET中实现这一目标?
关键是我需要在事件完成时执行该方法,因为只有这样我才能访问对象的某些属性。
我在考虑在类级别全局添加变量,并在Event1处理程序中为其赋值。 然后在Event2处理程序内部检查变量是否已初始化,这意味着我们处于Event1完成的阶段。然后在Event2处理程序中添加我的方法。
这似乎不起作用,因为在执行Action2时我经常触发Event2(我不关心的操作)并且我收到堆栈溢出错误消息。 有没有一种方法可以让它真正发挥作用?
可以(如何)我做一些事情,比如覆盖库并添加一个新事件(什么都不做),在现有事件完成时触发;然后我会使用新事件来附加一个处理程序并将我的方法放在那里。
这些事件和操作是框架所固有的,因此我对它们没有太多控制权,因为它们的定义隐藏在.net库中。 所以我对一些一般原则和技巧感兴趣,这些是限制/挫折。
可在此处找到一些示例代码:https://stackoverflow.com/questions/41969955/how-to-use-invoke-to-call-a-method-after-an-event-was-finished
答案 0 :(得分:3)
事件处理本质上是同步的(假设有人不使用async void
或在处理程序中启动自己的线程),所以代码如下:
Event1?.Invoke();
//Do stuff after Event1
已经做了你要问的事。如果您需要等待由Event1
的处理程序启动的某个异步任务,那么除了事件调用过程之外,您还需要执行此操作。