使用WCF的两个winform应用程序之间的通信?

时间:2013-01-23 09:31:08

标签: c# .net winforms wcf

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

3 个答案:

答案 0 :(得分:1)

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

有一个关于peer-to-peer communication using WCF at MSDN的“简单”教程。

请注意,这并不像听起来那么容易。您可能更喜欢just send messages using Windows' SendMessage

答案 1 :(得分:0)

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

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

App1调用service方法并告诉app2需要执行。 App1可以等待响应。

App2不时ping服务以查看是否需要执行。 App2完成了它的工作,并致电服务方法告诉它已经完成。

App1将在完成后获得响应。

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

有关如何实现WCF服务的信息,请参阅:http://wcftutorial.net/WCF-Getting-Started.aspx

答案 2 :(得分:0)

基本上:

一方面实现“服务器”

UIIServiceHost = new ServiceHost(typeof(UIInterop));
UIIServiceHost.Open();

其中UIInterop是实现作为服务合同的IUIInterop的类

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; }
}

Generate代理类=> UIInteropClient

另一方面使用代理类

实现客户端
using ( UIInteropClient proxy = new UIInteropClient("nameDependingOfAppConfig") ) {
    proxy.SetControlValue(new UIControl {});
}

=====编辑=====

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