【发布时间】:2020-10-17 02:23:22
【问题描述】:
我有两个插件在第三方主机应用程序中工作。此主持人有一个名为 DocumentOpened 的事件。
我从插件 A 和插件 B 订阅此事件。显然插件 A 和插件 B 彼此不认识。我想要实现的是在 B 处理完事件后再次将控制权交给插件 A。
Plugin A)
Host.DocumentOpened += SomeCodeA()
Plugin B)
Host.DocumentOpened += SomeCodeB()
现在,在插件 A 中执行一些操作!再次进入B后,不知道如何将控制权返回给A!
所以我们说在这一切完成之后调用 PluginA.Method()!
【问题讨论】:
-
在这种情况下不要关闭事件。有一个全局变量来指示 A 或 B 是否具有控制权。当 A 具有控制权时,您可以忽略 B 事件。当 B 处于控制状态时,忽略 A 事件。
-
嗨@jdweng 我不想忽略这些事件,我希望所有事件都被执行,但是在事件 B 之后我想再次从 A 执行一些事情!
-
你需要一个队列,所以 B 等到 A 完成。所以你需要一个只处理队列请求的进程。
-
那不是我想要的顺序。
-
有很多方法可以处理队列。我只是说您需要一个队列,并且您必须确定处理的优先级/顺序。
标签: c# events plugins event-handling plugin-architecture