gpt4 book ai didi

winforms - 如何在运行时确定方法是否异步

转载 作者:行者123 更新时间:2023-12-04 15:13:39 24 4
gpt4 key购买 nike

我有一个遗留项目,它有数百个 Winforms 事件的方法签名。显然,我不想在当前的情况下执行 BeginInvoke/EndInvoke,因为这会导致 UI 跨线程问题。

但是我需要(由于死锁)能够将这些签名标记为异步来处理我们必须能够执行的一些异步命令。除了死锁之外,没有其他方法会导致任何结果。

我可以使用 BeginInvoke 成功调用该事件,并且它可以完美运行并且可以正常异步等。但是,这会将它分解到另一个线程中并破坏我们不想经历的旧实现并使异步和 Invoke 感知。

所以我正在调查使用 event.GetInvokationList() 并循环遍历并分别调用每个。如果方法是异步的,则开始/结束调用。否则直接在 UI 线程上调用它。

我唯一的问题是我无法通过反射找到任何方法来判断方法签名是否异步。

任何人都知道如何从 MethodInfo 或 GetInvokationList() 值中确定方法是否异步?

谢谢!

最佳答案

如果您使用的是 .net 4.5,请尝试“AsyncStateMachineAttribute”。
http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.asyncstatemachineattribute.aspx

关于winforms - 如何在运行时确定方法是否异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13183313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com