我需要对 WCF 服务的功能进行一些实时报告。该服务在 Windows 应用程序中自托管,我的要求是当客户端调用某些方法时向主机应用程序报告“实时”。
我对该任务的最初想法是在服务代码中发布“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
服务变量是 ServiceHost 的实例,而不是您的服务实现。尝试类似的方法:
MyService myService = new MyService();
myService.outputMessage += new MyService.MessageEventHandler(frm2_outputMessage);
host = new ServiceHost(myService);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)