C# 在单独的线程上执行程序

C# 在单独的线程上执行程序,c#,multithreading,reflection,console,invalidoperationexception,C#,Multithreading,Reflection,Console,Invalidoperationexception,我正在尝试与第三方应用程序交互,但每当我尝试调用一个方法时,我都会收到一条错误消息,上面写着System.invalidoOperationException:必须在应用程序线程上执行操作。异常类型为System.Reflection.TargetInvocationException,我猜这是因为我的应用程序运行在一个完全独立的进程中。有没有办法让我的程序(一个控制台应用程序)开始运行在与第三方应用程序相同的线程上 不能在一个线程中运行两个独立的应用程序 如果试图与应用程序中的某些UI控件交互

我正在尝试与第三方应用程序交互,但每当我尝试调用一个方法时,我都会收到一条错误消息,上面写着
System.invalidoOperationException:必须在应用程序线程上执行操作
。异常类型为
System.Reflection.TargetInvocationException
,我猜这是因为我的应用程序运行在一个完全独立的进程中。有没有办法让我的程序(一个控制台应用程序)开始运行在与第三方应用程序相同的线程上

不能在一个线程中运行两个独立的应用程序

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

如果您试图操纵第三方应用程序,那么合适的解决方案完全取决于您如何与之交互。它提供API吗?将消息发送到其窗口句柄


为了与另一个应用程序的运行实例交互,您需要使用远程处理(过时)或WCF之类的工具。实际上,另一个应用程序充当服务器,您必须以某种方式连接到它。引用其程序集、实例化其中定义的一个类并对该实例调用方法不会让您与已经在执行的进程对话。

您可能想稍微澄清一下您的问题。第三方控制和第三方应用是两种不同的工具。提到哪个第三方也会有帮助。是的,抱歉,我不知道我为什么要控制它。我指的是第三方申请。由于公司政策的原因,我真的不能说是哪个应用程序,但是如果有任何指向正确方向的指示,我将不胜感激。谢谢你买了一支雪茄烟,他让你知道他的代码不支持线程。大多数代码不检查,只是随机失败。猜测一下“应用程序线程”可能意味着什么,一定要联系供应商寻求支持,但它很可能意味着主线程。创建用户界面并泵送消息循环的程序。这是一个常见的要求。谢谢你的帮助,我想我明天必须与供应商联系。我很高兴我没有遗漏任何明显的东西。谢谢。我不能说太多,因为公司的政策(我知道这不会有多大帮助),但我指的是第三方应用程序。我试图利用它已经在其程序集中公开的公共方法。当我尝试从我的程序集中调用任何方法时,都会抛出该错误。如果您正在加载它们的程序集并以这种方式调用方法,那么您已经在应用程序的线程中调用了它,因此不应该得到这些异常。如果您正在连接到应用程序的运行实例,则应该有一个WCF或其他可用接口。请看,我从未使用过WCF,因为我认为它只有在我完全控制第三方应用程序和控制台应用程序的情况下才有用。我将研究使用WCF调用第三方方法。谢谢。在这种情况下,运行中的应用程序必须充当服务器。与任何类型的服务器(web、数据库等)一样,它需要为您提供一种与之对话的方式。与一个不打算以这种方式使用的应用程序交谈有很多黑客,但它们充其量是脆弱的,绝对不适合于生产应用程序。如果他们公开了其中一个程序集中的类,那么我猜他们希望你使用它,但(不是说重点)你以这种方式做的任何事情,除非他们有一些奇怪的魔法,否则将使用在应用程序进程中创建的实例,而不是已经运行的进程。如果他们真的使用术语“API”,那可能是他们想要你做的。