[Silverlight] 一个易犯的错误:关于调用 WCF 服务

在采用 Silverlight 调用 WCF 的开发过程中,今天遇到一个错误。
由于 Silverlight 中只支持异步方式的 WCF 调用,所以代码一般是这样子的:

var myServiceClient  =   new  MyServiceClient();
myServiceClient.GetSomeDataCompleted 
+=  (sender, args)  =>  
{
      HtmlPage.Window.Alert(
" completed. " );
};
myServiceClient.GetSomeDataAsync();

这样写是没有问题的。

但是有的朋友可能为了提高代码共用程度,而把 myServiceClient 这个 WCF 的客户端代理对象作为类的字段来定义,以便在多次调用中共享。比如这篇教程中所说的:

“这一步比较复杂,这里分小点讨论。为了调用WCF服务,先定义一下全局变量。

AcademeServiceClient academeSClient;


这样做有什么问题呢?

假设我们上面的代码是在一个按钮的点击事件处理函数里定义的,那么,就会导致每点击一次按钮就注册一次 GetSomeDataCompleted 的事件处理函数。最后你会发现点一次按钮,会重复多次执行回调函数。

所以还是不要共用 client 代理了,每次调用之前创建一个比较好。
因为今天遇到了这个错误,在这里提醒一下大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值