C# 使用WCF在两个winform应用程序之间进行通信?

C# 使用WCF在两个winform应用程序之间进行通信?,c#,.net,winforms,wcf,C#,.net,Winforms,Wcf,我有两个不同的winform应用程序,App1和app2。App1调用app2的exe(使用DOS命令窗口)并发送消息以启动app2。app2开始执行,一旦完成任务,它会将执行成功的消息发送回app1。如何使用WCF实现此功能。早些时候,同样的代码是用foxpro编写的,这个finc是通过内存管理实现的。这只是实现这一点的概念性方法: 您需要实现WCF服务。 有很多方法可以完成这项任务。其中一个应该是这样的 App1调用服务方法并告知需要执行app2。App1无法等待响应 App2不时对服务进行

我有两个不同的winform应用程序,App1和app2。App1调用app2的exe(使用DOS命令窗口)并发送消息以启动app2。app2开始执行,一旦完成任务,它会将执行成功的消息发送回app1。如何使用WCF实现此功能。早些时候,同样的代码是用foxpro编写的,这个finc是通过内存管理实现的。

这只是实现这一点的概念性方法:

您需要实现WCF服务。 有很多方法可以完成这项任务。其中一个应该是这样的

App1调用服务方法并告知需要执行app2。App1无法等待响应

App2不时对服务进行ping,以查看是否需要执行该服务。 App2完成了它的工作,并调用服务方法告知它已完成

App1将在完成时获得响应

另一个选项不是实现请求/响应,而是从App1 ping服务以查看App2是否完成了它的工作


有关如何实现WCF服务,请参见,例如:

我认为您需要的是点对点通信,其中两个应用程序(可能在同一台机器上运行,也可能不在同一台机器上运行)异步发送消息。这就是MSN Messenger等聊天程序的工作方式

有一个“简单”的教程

请注意,这并不像听起来那么容易。你可能更愿意

基本上:

在一侧实例化“服务器”

其中UIInterop是一个实现IUIIinterop的类,它是一个服务契约

using System.ServiceModel;

[ServiceContract]
public interface IUIInterop {
    [OperationContract]
    void SetControlValue (UIControl c);
}

[DataContract]
public class UIControl {        
    [DataMember]
    public String Name { get; set; }

    [DataMember]
    public String Value { get; set; }
}
代理类=>UIInteropClient

另一方面,使用代理类实现客户机

using ( UIInteropClient proxy = new UIInteropClient("nameDependingOfAppConfig") ) {
    proxy.SetControlValue(new UIControl {});
}
======编辑=====


类和接口的名称只反映了我缺乏想象力

哇,你不是说
FoxPro
那是一种古老的语言。。你是说winform应用程序是一个FoxPro windows应用程序吗。。?关于使用WCF,您打算做什么?您打算将其改为服务应用程序吗?是的,该应用程序是在Foxpro中构建的,但现在我们正在将代码从Foxpro迁移到C#.net 4.0。。我以为我在过去的Clipper/FoxPro编码时代经历了一场噩梦。。谢谢你。应用程序1应该是服务器,因为有许多应用程序像app2,所有应用程序都应该按顺序执行,一旦执行了app2,则从应用程序1和soo调用app3执行。所有应用程序都在同一个系统上。请建议实现这一目标的最佳方法。非常感谢。应用程序1应该是服务器,因为有许多应用程序像app2,所有应用程序都应该按顺序执行,一旦执行了app2,则从应用程序1和soo调用app3执行。所有应用程序都在同一个系统上。请建议实现这一目标的最佳方法。实现这一目标的方法有很多,而最佳方法取决于太多的变量,因此不可能回答您的问题。请向您公司的架构师或高级开发人员寻求帮助。
using ( UIInteropClient proxy = new UIInteropClient("nameDependingOfAppConfig") ) {
    proxy.SetControlValue(new UIControl {});
}