在.NET Windows窗体中,如何在两个EXE或应用程序之间发送数据?

时间:2010-12-11 13:52:23

标签: c# .net winforms

我提出的场景基本上是两个.NET可执行文件之间的交互。

我在C#(Application-A)中创建了一个.NET Windows Forms应用程序,该应用程序在用户的计算机上运行并执行一些特定的活动,因为它会收集一些数据。 现在我有另一个.NET Windows Forms可执行文件(Application-B),也是用C#编写的,它还根据提供的某些输入或数据执行某些特定活动。

现在我想要做的是,从Application-A调用Application-B并将一些数据传递给它。

我如何做到这一点?

4 个答案:

答案 0 :(得分:4)

您可以使用多个选项。您有以下每个选项的资源。

  • .NET Remoting
  • WCF
  • 使用通讯文件
  • MSMQ

只有当进程位于同一台机器上时,最后两个选项才有效。

由于它们是两个独立的进程,我认为最简单的方法是使用.NET RemotingHere您可以找到有关如何操作的文档和示例。

远程处理的替代方法是WCF(> = .NET 3.0)。它比远程执行better

如果进程将始终在同一台机器上,如果您不想在localhost上使用远程处理,则可以通过文件进行通信(简单的解决方案通常可以正常工作!

其他更复杂的解决方案是使用Message Queue(MSMQ)进行通信。 Here你可以找到一个关于如何使用它的例子。

答案 1 :(得分:0)

您可以使用MSMQ在应用程序之间进行通信。

然而,

任何机制都可以。

您可以使用基于文件的通信(写入已知目录并从中读取)。

WCF是另一种解决方案。

答案 2 :(得分:0)

  

如果两个应用程序都在与

相同的用户计算机上运行

1-这可以通过进程间通信信道(IPC信道)来实现

2-如果您使用的是.NET 4.0,则可以使用内存映射文件

  

如果两个应用程序都在不同的系统上运行

1-您可以使用.NET Remoting

2-您可以进行基于WCF服务的通信

3-如果使用.NET 2.0或更低版本,Web服务也是一种选择

答案 3 :(得分:0)

WCF将在未来为您提供很大的灵活性:如果您决定增强此通信以支持多种通信模式,那么app.config更改应该是支持不同绑定的大部分工作。< / p>

在我参与的一些项目中,有一种混合的通信技术,其中一种选择将更容易维护 - 这使我接受WCF决定其固有的灵活性(WCF也支持MSMQ应该需要排队通信。)

如果您对学习曲线感到担忧,并且您确信将来不再需要采用其他通信拓扑,则远程处理可能是一种有用的解决方案。远程处理可能是设置IPC所需的最简单,最少开发人员工作的方法。

您应该远离Web服务之类的东西 - WCF不会遭受的Web服务操作有不必要的开销(例如,WCF仍然可以允许二进制传输)。