我正在尝试与第三方应用程序交互,但每当我尝试调用方法时,我都会收到一条错误消息,提示System.InvalidOperationException: Operation must be performed on the application thread
. 例外是类型System.Reflection.TargetInvocationException
,我猜这是因为我的应用程序在一个完全独立的进程中运行。有没有办法让我的程序(一个控制台应用程序)开始在与第三方应用程序相同的线程上运行?
问问题
192 次
1 回答
2
您不能让两个单独的应用程序在单个线程中运行。
如果您尝试与应用程序中的某些 UI 控件进行交互,您可以使用.Invoke()
它来确保相关代码在 UI 线程中执行。
如果您尝试操纵第三方应用程序,则适当的解决方案完全取决于您与它的交互方式。它提供 API 吗?向其窗口句柄发送消息???
为了与另一个应用程序的正在运行的实例进行交互,您需要使用远程处理(已过时)或 WCF 之类的东西。本质上,另一个应用程序充当服务器,您必须以某种方式连接到它。引用它的程序集,实例化其中定义的类之一并在该实例上调用方法不会让您与已经执行的进程对话。
于 2012-01-02T22:23:57.943 回答