我在我的自动化应用程序中遇到过这种行为:当我通过调用该InvokePattern.Invoke()
方法“单击”一个按钮时,一切都会停止,直到自动化应用程序内的单击事件处理程序完成。
虽然这可以使一些事情变得简单(例如,我不必编写大量代码来等待带有进度条的对话框消失,因为我只是在一切完成后重新获得控制权),但我做不到还要别的吗。它甚至会阻止对另一个线程中的自动化 API 的访问,在单击处理程序完成后它会继续。
当自动化应用程序中的单击处理程序打开模式对话框时,这会导致问题,然后我无法执行任何操作,通过自动化 API 对应用程序的访问被阻止,直到手动关闭对话框。
有没有人以某种方式解决了这个问题并且可以帮助我?
谢谢,卡雷尔
PS:参考来源是这样说的:
Request that the control initiate its action.
/// Should return immediately without blocking.
/// There is no way to determine what happened, when it happend, or whether
/// anything happened at all
public void Invoke() { ... }
编辑:它在自动化不是 .NET 应用程序的 Windows 记事本应用程序时完美运行。它不适用于记事本克隆(C# WinForms 应用程序)。