注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

WCF的学习总结(四)---Timeout中的异常问题  

2011-08-18 16:54:11|  分类: NET(C#) |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

WCF的学习总结(四)
在蒋兄的BLOG上说TIMEOUT的问题,可是在VS2010上不再出现,可能是微软进行了改进吧,在这个过程里遇到了一个很难缠的问题,先说实验的过程:
用动态调用即自己在客户端实现接口,然后按原来的方法,只是增加了一个窗口,结果很快调用成功,但因为不是与实际的发生的环境一样,所以又改用文章上说的使用代理类,麻烦就随之而出。
说说过程,首先引用服务生成代理类,然后定义private ServiceReference1.DuplexCalculatorClient m_pClient一个代理类的变量,然后生成调用函数在其中调用:
this.m_pClient.Add(m_dLeft,m_dRight);
然后报下面这个错误,向 ChannelFactory 提供的 InstanceContext 包含未实现CallbackContractType“ClientWindow.ServiceReference1.DuplexCalculatorCallback”的UserObject,不明白啊,试了一上午,也没有解决,下午也仍然没有解决,看着他就发呆,又看了不少别的人的相类似的文章也没有什么头脑,后来突然想到了上面文章中的如何不使用代理类,不添加引用来使用服务,那么他重写了一个,而这个总报没有重写,是不是要各自用各自的,于是就重新生成了一个接口类,其继承自代理类中的DuplexCalculatorCallback,如下:
    class CalcultorCallbackProxty : DuplexCalculatorCallback
    {
        public void DisplayResult(double addleft, double addright, double result)
        {
            MessageBox.Show(string.Format("left + y = {2} where x = {0} and {1}", addleft,

addright, result), "Result", MessageBoxButtons.OK, MessageBoxIcon.Information);

        }
    }
继承了那个回调的东西,实验一切成功,晕啊。
其实反过头来一想,可不得自己用自己的呗,要不他怎么会认识你写的东西呢,又领悟一招。

后记:其实为了保证UI线程和更新界面的同步,推荐大家使用委托来实现更新,这样会更安全,有一个C#的委托实例可以使用:
SendOrPostCallback spc = (ICallBack cb)=>
{
//操作代码---回调函数
}

  评论这张
 
阅读(1056)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017