我有两个不同的winform应用程序,App1和app2。 App1调用app2的exe文件(使用DOS命令窗口),并发送消息以启动app2。 app2开始执行,一旦完成其任务,它会向app1发送消息,指示执行成功。如何使用WCF实现此功能。 之前,相同的代码是使用foxpro编写的,并且使用内存管理实现了此功能。
我有两个不同的winform应用程序,App1和app2。 App1调用app2的exe文件(使用DOS命令窗口),并发送消息以启动app2。 app2开始执行,一旦完成其任务,它会向app1发送消息,指示执行成功。如何使用WCF实现此功能。 之前,相同的代码是使用foxpro编写的,并且使用内存管理实现了此功能。
SendMessage
来发送消息,链接为just send messages using Windows' SendMessage
。基本上:
一方面实例化一个“服务器”
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; }
}
生成代理类 => UIInteropClient
在另一端使用代理类实现客户端
using ( UIInteropClient proxy = new UIInteropClient("nameDependingOfAppConfig") ) {
proxy.SetControlValue(new UIControl {});
}
===== 编辑 =====
类和接口的名称仅反映了我的想象力不足
这只是概念性的实现方法:
您需要实现WCF服务。有许多方法可以完成此任务。其中之一应该是这样的。
App1调用服务方法并告诉它需要执行App2。然后,App1可以等待响应。
App2不时地ping服务以查看是否需要执行。App2完成工作并调用服务方法告诉它已经完成。
当完成时,App1将获得响应。
另一个选项是不实现请求/响应,而是从App1 ping服务以查看App2是否完成了其工作。
有关如何实现WCF服务,请参见:http://wcftutorial.net/WCF-Getting-Started.aspx