WCF将WinForm Event中的Duplex Event结果提升为null

时间:2011-09-26 10:19:07

标签: .net wcf events

我有一个连接到WCF的winForm应用程序,使用带有自定义接口的双工通道。

回调功能正常,但尝试从回拨事件中引发事件让我陷入困境。

在我用来连接到WCF服务的支持类上,我使用单个事件来引发消息,然后在主应用程序表单的输出文本框控件中显示。

支持类中的 OnEvent 已定义:

protected virtual void OnMsgEvent(SurfaceArgs e)
{
  MsgEventEventHandler temp = MsgEvent;
  if (temp != null)
  {
    temp(this,e);
  }
}

定义了从WCF回调实现的事件:

public void OnEvent4(string sValue)
{
  OnMsgEvent(new SurfaceArgs(sValue, EventLogEntryType.Information));
}

当我从WCF事件进行调用时, null 的OnMsgEvent验证始终在以下位置处于null:

if (temp != null)

就好像从WCF引发的事件是在一个单独的线程上,我不确定如何调用它或委托它,以便我可以调用OnMsgEvent。

目前,我正在传递一个指向主窗体并调用公共方法的指针。我希望这个临时解决方案在Textbox控件上需要一个Invoke,但它没有。

解决方案可能很简单,我还没有看到它。 =)

1 个答案:

答案 0 :(得分:0)

在研究了类似问题后,我后来发现: Using a Callback to pass an Event to a WCF Client

我注意到对链接文章中使用的Callback的引用被作为“this”对象类型传递。

初始客户端设计在创建InstanceContext时使用了Callback类的新实例。

所以不要使用: _context = new InstanceContext(new IMyCallback());

当我将其更改为时,它按照我的预期方式工作: _context = new InstanceContext(this);

支持类扩展了IMyCallback接口,因此可能通过传递“this”它满足(对象实现)的InstanceContext要求。它有效,所以我不抱怨!