我有两个不同的winform应用程序,App1和app2。 App1调用app2的exe(使用DOS命令窗口)并发送消息以启动app2。 app2开始执行,一旦完成任务,它就会向app1发送回执行成功的消息。如何使用WCF实现此功能。之前在foxpro中编写了相同的代码,这个finc是使用内存管理实现的。
答案 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 {});
}
=====编辑=====
类和接口的名称只反映了我缺乏想象力