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

  • 相关阅读:
    面向对象———类
    二维数组简单使用
    数组——算法
    第6章 约束满足问题CSP
    第5章 对抗搜索
    第4章 超越经典的搜索
    140303 命令行选项 ccf
    150904 高速公路 ccf
    170304 地铁修建 ccf
    vector容器
  • 原文地址:https://www.cnblogs.com/windy2008/p/1987545.html
Copyright © 2011-2022 走看看