zoukankan      html  css  js  c++  java
  • 关于Wcf事件多次执行的问题

    对于WCF事件的重复调用、消息的重复提示,基本都属于Service Client类定义成全局字段,事件的重复注册造成的。

    不过我们可以通过一些办法来解决这个问题。这里总结了一下,供参考。

     一、取消Service Client类定义成全局字段,在每次使用时初始化,调用:

    using(var myServiceClient = new MyServiceClient())

    {

      myServiceClient.DoSomethingCompleted += (sender, args) =>
      {
            MessageBox.Show("Doodo");
      };
      myServiceClient.DoSomethingAsync();

    }

    二、定义成全局变量,仅在Load时或者构造函数内注册一次事件:

    Public MyClass()

    {

      myServiceClient.DoSomethingCompleted += new EventHandler<DoSomethingCompletedEventArgs>(myServiceClient_DoSomethingCompleted);

    }

    其他地方再用  myServiceClient.DoSomethingAsync();

    三、执行时注册(+=),执行成功后取消注册(-=):

    就是在myServiceClient_DoSomethingCompleted方法这里加入取消注册操作

        myServiceClient.DoSomethingCompleted -=

          new EventHandler<DoSomethingCompletedEventArgs>(myServiceClient_DoSomethingCompleted);

    四、还有更猛的,定义成全局静态的,在Application_Startup时初始化,把所有事件执行一次初始化操作,这样对于一个应用程序只需做一次操作。

    每次调用的时候,判断下连接状态Open、Close.

    出处: http://www.cnblogs.com/windy2008

  • 相关阅读:
    python基础之数据类型
    简单猜年龄游戏
    python基础之变量
    Python3获取大量电影信息:调用API
    10分钟制作UWP汉堡菜单
    java 异常处理
    多态
    接口与继承
    数组及课后动手动脑
    String类型
  • 原文地址:https://www.cnblogs.com/windy2008/p/1987545.html
Copyright © 2011-2022 走看看