我需要做一些关于WCF服务功能的实时报告。该服务是在Windows应用程序中自行托管的,并且我的要求是在客户端调用某些方法时向主机应用程序报告“实时”。订阅WCF服务中的事件
我最初的想法是在服务代码中发布“NotifyNow”事件,并在我的调用应用程序中订阅事件,但这似乎不可能。在我的服务代码(实现,而不是接口),我曾尝试加入以下
public delegate void MessageEventHandler(string message);
public event MessageEventHandler outputMessage;
void SendMessage(string message)
{
if (null != outputMessage)
{
outputMessage(message);
}
}
,并调用SendMessage函数方法,每当我需要通知一些动作的主机应用程序。 (这是基于我在WinForms应用程序中记录的这种形式间通信,而我的记忆可能让我失望......)
当我尝试在我的主机中挂接事件处理程序时不过,我似乎无法弄清楚如何连接到事件......我的托管代码是(简而言之)
service = new ServiceHost(typeof(MyService));
service.outputMessage += new MyService.MessageEventHandler(frm2_outputMessage);
// the above line does not work!
service.Open();
(包裹在一个try/catch)。
任何人都可以帮忙,告诉我如何让这种方法起作用,或者指点我一个更好的方法。
TIA
CustomEvent不会显示在Service1下。这是否适用于WCF 4.5? – 2013-05-09 19:22:29