Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从应用程序1.exe获取值,并使用C#…,将这些值传递给应用程序2.exe。。。?_C#_Windows_Winforms - Fatal编程技术网

是否可以从应用程序1.exe获取值,并使用C#…,将这些值传递给应用程序2.exe。。。?

是否可以从应用程序1.exe获取值,并使用C#…,将这些值传递给应用程序2.exe。。。?,c#,windows,winforms,C#,Windows,Winforms,是否可以从应用程序1.exe获取值,并使用C#…,将这些值传递给应用程序2.exe。。。? 与应用程序1.exe一样,应用程序1.exe处于运行模式,而应用程序2.exe也在运行。现在假设我想将一些数据从application1.exe传递到application2.exe,而不需要手动输入数据。是否可以在自动模式下使用C#…?您可以使用内存映射,以便一个应用程序使用identificator将数据写入RAM,其他应用程序读取数据,更多信息请参见: 这是最简单的方法之一。内存映射是一种方法。命名

是否可以从应用程序1.exe获取值,并使用C#…,将这些值传递给应用程序2.exe。。。?
与应用程序1.exe一样,应用程序1.exe处于运行模式,而应用程序2.exe也在运行。现在假设我想将一些数据从application1.exe传递到application2.exe,而不需要手动输入数据。是否可以在自动模式下使用C#…?

您可以使用内存映射,以便一个应用程序使用identificator将数据写入RAM,其他应用程序读取数据,更多信息请参见:


这是最简单的方法之一。

内存映射是一种方法。命名管道和未命名管道是另一种。如果您想要一种更“快速和肮脏”的方式,您甚至可以用一种方式写入文件,用另一种方式读取。有几种方法。但是在所有这些选项中,我更喜欢命名管道。

您所描述的是进程间通信(IPC)。 有很多通信方法,您应该选择哪一种基本上取决于时间、同步和空间上的解耦(即它们的属性)等因素

关于这些方法及其优缺点,存在完整的过程。正如在评论中指出的,我想这个主题太宽泛了


简而言之:

  • 时间内的解耦:所有通信过程在通信时都必须在线吗
  • 空间中的解耦:通信过程必须相互了解吗
  • 同步中的解耦:通信阻塞
不同的方法具有不同的特性

例如:

方法:消息队列

假设:通信方 入/出队列消息

属性:在时间上解耦(消息队列 始终存在,通信方可以在线/离线)

空间解耦(通信方只知道信息 排队)

同步中的解耦?(取决于实施情况,例如:。 在空队列上阻塞
出列


Java提供了Java消息服务(Java Message Service,JMS),我想这确实是C语言的等价物。

使用IPC的机制有很多方法来实现它。但是您还没有说明这两个应用程序是否在同一台机器上运行

以下是可用于实现目标的列表


可能,是的。了解IPC(进程间通信)。也就是说,对于一个简单的答案来说,它涉及的内容太多了,对于初学者来说,这不是一件容易的事情。这是可以做到的,但它很复杂。你能不能不只是从exe1的某个地方写入数据,然后用exe2从那个地方读取数据?这可以简单地用零配置的wcf来完成。下面我用WCB做了一个完整的例子相信我IPC方法是最简单的。另一种方法是与共享内存通信,但在这种情况下,您需要将Win32API对象用于MemoryMappedFile和内核sincronization对象,如互斥对象或信号量,因为我认为这对您来说可能太复杂了,并且对于您的实际需要可能不是必需的。谈到IPC for windows,您不仅有Java参考资料。我会在.NET@ScottChamberlain中调用JMS的等效程序(谢谢您的输入!)“必须”,不是真的。内存映射是一种选择,但它不是唯一的IPC,但它非常简单且易于实现