.net WCF引发的双工事件导致WinForm事件为null
我有一个winForm应用程序,使用带有自定义接口的双工通道连接到WCF 回调可以正常工作,但是试图从回调事件引发事件让我陷入困境 在用于连接WCF服务的支持类上,我使用单个事件来引发消息,然后在主应用程序窗体上的输出文本框控件中显示消息 支持类中的OneEvent已定义为:.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)
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要求。它很管用,所以我没有抱怨