《WCF教程6》.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《WCF教程6》.doc

[原创]我的WCF之旅(6):在Winform Application中调用Duplex Service出现TimeoutException的原因和解决方案 几个星期之前写了一篇关于如何通过WCF进行 双向通信的文章([原创]我的WCF之旅(3):在WCF中实现双向通信(Bi-directional Communication) ),在文章中我提供了一个如果在Console Application 调用Duplex WCF Service的Sample。前几天有个网友在上面留言说,在没有做任何改动得情况下,把 作为Client的Console?Application 换成Winform Application,运行程序的时候总是出现Timeout的错误。我觉得这是一个很好的问题,通过这个问题,我们可以更加深入地理解WCF的消息交换的机制。 1.问题重现 首先我们来重现这个错误,在这里我只写WinForm的代码,其他的内容请参考我的文章。Client端的Proxy Class(DuplexCalculatorClient)的定义没有任何变化。我们先来定义用于执行回调操作(Callback)的类——CalculatorCallbackHandler.cs。代码很简单,就是通过Message Box的方式显示运算的结果。 using?System; using?System.Collections.Generic; using?System.Text; using?System.Windows.Forms; using?Artech.DuplexWCFService.Contract; using?System.ServiceModel; namespace?Artech.?WCFService.Client { ????[ServiceBehavior(ConcurrencyMode?=?ConcurrencyMode.Multiple)] ????public?class?CalculatorCallbackHandler?:?ICalculatorCallback ????{ ????????ICalculatorCallback?Members#region?ICalculatorCallback?Members ????????public?void?ShowResult(double?x,?double?y,?double?result) ????????{ ????????????MessageBox.Show(string.Format(x?+?y?=?{2}?where?x?=?{0}?and?{1},?x,?y,?result),Result,?MessageBoxButtons.OK,?MessageBoxIcon.Information); ????????} ????????#endregion ????} } 接着我们来设计我们的UI,很简单,无需多说。 代码如下 using?System; using?System.Collections.Generic; using?System.ComponentModel; using?System.Data; using?System.Drawing; using?System.Text; using?System.Windows.Forms; using?System.Threading; namespace?Artech.?WCFService.Client { ????public?partial?class?Form1?:?Form ????{ ????????private?DuplexCalculatorClient?_calculator; ????????private?double?_op1; ????????private?double?_op2; ????????public?Form1() ????????{ ????????????InitializeComponent(); ????????} ????????private?void?Form1_Load(object?sender,?EventArgs?e) ????????{ ????????????this._calculator?=?new?DuplexCalculatorClient(new?System.ServiceModel.InstanceContext(new?CalculatorCallbackHandler())); ????????} ????????private?void?Calculate() ????????{ ????????????

文档评论(0)

wgvi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档