在单独的线程上执行程序

时间:2012-01-02 22:10:50

标签: c# multithreading reflection console invalidoperationexception

我正在尝试与第三方应用程序进行交互,但每当我尝试调用方法时,都会收到一条错误消息System.InvalidOperationException: Operation must be performed on the application thread。例外类型为System.Reflection.TargetInvocationException,我猜这是因为我的应用程序在一个完全独立的进程中运行。有没有办法让我的程序(一个控制台应用程序)开始在与第三方应用程序相同的线程上运行?

1 个答案:

答案 0 :(得分:2)

您无法在单个线程中运行两个单独的应用程序。

如果您尝试与应用程序中的某些UI控件进行交互,则可以使用.Invoke()确保在UI线程中执行相关代码。

如果您尝试操纵第三方应用程序,则相应的解决方案完全取决于您与其进行交互的方式。它提供API吗?将消息发送到其窗口句柄? ??

为了与另一个应用程序的运行实例进行交互,您需要使用远程处理(废弃)或WCF之类的东西。本质上,另一个应用程序充当服务器,您必须以某种方式连接到它。引用其程序集,实例化其中定义的一个类并在该实例上调用方法将不允许您与已执行的进程通信。