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