千家信息网

如何实现WCF回调

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要为大家展示了"如何实现WCF回调",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何实现WCF回调"这篇文章吧。由于WCF回调方法并非运行在主线
千家信息网最后更新 2025年01月17日如何实现WCF回调

这篇文章主要为大家展示了"如何实现WCF回调",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何实现WCF回调"这篇文章吧。

由于WCF回调方法并非运行在主线程中,如果WCF回调方法需要更新与异步调用结果相关的界面,例如本例中的lbMessage控件,则需要将回调的调用封送(Marshal)到当前主程序界面的同步上下文中。我们可以使用 SynchronizationContext以及它的SendOrPostCallback委托,对调用进行封送:

public ExplorerClientForm()   {   InitializeComponent();   m_synchronizationContext = SynchronizationContext.Current;   }   private SynchronizationContext m_synchronizationContext;

则WCF回调方法修改为:

//callback method   void OnTransferCompleted(IAsyncResult result)   {   Stream stream = m_service.EndTransferDocument(result);   result.AsyncWaitHandle.Close();    SendOrPostCallback callback = delegate   {   lbMessage.Text = string.Format("The file {0} had been transfered sucessfully.",   m_doc.FileName);   };   m_synchronizationContext.Send(callback,null);   }

在调用异步方法时,由于对BeginTransferDocument()和EndTransferDocument()方法的调用可能会在不同的方法体中,因而我将服务代理对象定义为private字段。如果希望将服务对象定义为一个局部变量,可以在调用BeginTransferDocument() 方法时,将代理对象传递到方法的asyncState参数中,然后在调用EndTransferDocument()方法之前,通过 IAsyncResult获得准确的服务代理对象:

m_service.BeginTransferDocument(m_doc,OnTransferCompleted,m_service);

将m_service作为asyncState对象传入之后,在调用EndTransferDocument()方法之前,就可以根据它先获得服务代理对象:

IDocumentsExplorerService m_service = result.AsyncState as IDocumentsExplorerService;   Stream stream = m_service.EndTransferDocument(result);   //rest codes

以上是"如何实现WCF回调"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

方法 对象 代理 服务 内容 篇文章 界面 学习 帮助 不同 上下 上下文 主程序 参数 变量 字段 局部 控件 易懂 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 宁波慈溪市企业用服务器 数据库可疑 小鱼易连手机登录无法连接服务器 华文网络技术有限公司招聘 不能认证服务器是怎么回事 网络安全服务定义 学习公安网络安全管理规定 道路监测数据库 计算机如何启动服务器服务 徐汇区辅助软件开发答疑解惑 金山区品质软件开发服务价格 如何理解软件开发的本质是建模 成都web前端软件开发机构 p2p网络技术具有隐私保护 公司内部服务器怎么设置 市场上经典的176传奇服务器 怎样检查固态硬盘数据库 数据库代理层可以避免单点故障 东莞无限软件开发供应商 win7服务器管理器在哪 数据库在线考试系统 网络教育数据库技术 放心的财务管理软件开发流程 吴江区正规网络技术资质 上海软件开发设施创意 崇明区网络技术售后保障 工业网络安全股票龙头股 杭州珍林网络技术有限公司 4g打不开网站是服务器的问题吗 和今日头条差不多的软件开发
0