我有一个遗留项目,它有数百个 Winforms 事件的方法签名。显然,目前我不想去做 BeginInvoke/EndInvoke,因为这会导致 UI 跨线程问题。
但是我需要(因为死锁)能够将这些签名标记为异步来处理我们必须能够执行的一些异步命令。除了死锁之外,没有其他方法会导致任何结果。
我可以使用 BeginInvoke 成功调用该事件,它可以正常工作并且异步正常等。但是,这会将它分解到另一个线程并破坏我们不想经历的旧实现并使异步和 Invoke 感知。
因此,我正在调查使用 event.GetInvokationList() 并分别循环和调用每个。如果方法是异步的,则开始/结束调用。否则直接在 UI 线程上调用它。
我唯一的问题是我无法通过反射找到任何方法来判断方法签名是否是异步的。
任何人都知道如何从 MethodInfo 或 GetInvokationList() 值中判断一个方法是否是异步的?
谢谢!