Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WCF引发的双工事件导致WinForm事件为null_.net_Wcf_Events - Fatal编程技术网

.net WCF引发的双工事件导致WinForm事件为null

.net WCF引发的双工事件导致WinForm事件为null,.net,wcf,events,.net,Wcf,Events,我有一个winForm应用程序,使用带有自定义接口的双工通道连接到WCF 回调可以正常工作,但是试图从回调事件引发事件让我陷入困境 在用于连接WCF服务的支持类上,我使用单个事件来引发消息,然后在主应用程序窗体上的输出文本框控件中显示消息 支持类中的OneEvent已定义为: protected virtual void OnMsgEvent(SurfaceArgs e) { MsgEventEventHandler temp = MsgEvent; if (temp != null)

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

回调可以正常工作,但是试图从回调事件引发事件让我陷入困境

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

支持类中的OneEvent已定义为:

protected virtual void OnMsgEvent(SurfaceArgs e)
{
  MsgEventEventHandler temp = MsgEvent;
  if (temp != null)
  {
    temp(this,e);
  }
}
public void OnEvent4(string sValue)
{
  OnMsgEvent(new SurfaceArgs(sValue, EventLogEntryType.Information));
}
定义了从WCF回调实现的事件:

protected virtual void OnMsgEvent(SurfaceArgs e)
{
  MsgEventEventHandler temp = MsgEvent;
  if (temp != null)
  {
    temp(this,e);
  }
}
public void OnEvent4(string sValue)
{
  OnMsgEvent(new SurfaceArgs(sValue, EventLogEntryType.Information));
}
当我从WCF事件调用时,对null的OnMsgEvent验证总是在以下位置生成null:

if (temp != null)
这就好像从WCF引发的事件位于一个单独的线程或其他什么东西上,我不确定如何调用它或委托它,以便调用OnMsgEvent

目前,我正在传递一个指向主窗体的指针并调用一个公共方法。我希望这个临时解决方案需要对Textbox控件进行调用,但事实并非如此


解决方案可能很简单,我只是还没有看到

在研究了一个类似的问题后,我后来发现:

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

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

因此,与其使用: _context=newinstancecontext(newimycallback())

当我将其更改为: _上下文=新的InstanceContext(此)

support类扩展了IMyCallback接口,因此可能通过传递“this”,它满足了(对象实现)的InstanceContext要求。它很管用,所以我没有抱怨