在.NET / C#中完成事件后运行操作

时间:2017-01-31 22:52:06

标签: c# events event-handling

措施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

1 个答案:

答案 0 :(得分:3)

事件处理本质上是同步的(假设有人不使用async void或在处理程序中启动自己的线程),所以代码如下:

Event1?.Invoke();
//Do stuff after Event1

已经做了你要问的事。如果您需要等待由Event1处理程序启动的某个异步任务,那么除了事件调用过程之外,您还需要执行此操作。