wcf - 订阅 WCF 服务中的事件

标签 wcf event-handling delegates

我需要对 WCF 服务的功能进行一些实时报告。该服务在 Windows 应用程序中自托管,我的要求是在客户端调用某些方法时向主机应用程序报告“实时”。

我对该任务的最初想法是在服务代码中发布一个“NotifyNow”事件,并在我的调用应用程序中订阅该事件,但这似乎是不可能的。在我的服务代码(实现,而不是接口(interface))中,我尝试添加以下内容

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

关于wcf - 订阅 WCF 服务中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1537302/

相关文章:

linux - 添加目录中的文件后,如何使用 inotify-tools 向我发送电子邮件?

iphone - 如何验证委托(delegate)是否响应选择器?

C#,将 Action 分配给委托(delegate)

c# - 如何跨对象链处理事件?

c# - 事件处理程序抛出对象引用错误

java - 用java编写C#委托(delegate)

WCF 服务。在哪里添加。 .svc 文件

wcf - 404 BadRequest使用IIS主机 header 通过外部IP公开WCF服务

wcf - 私有(private) NuGet 服务器 : Request Entity Too Large

c# - WCF 并行模拟