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

  • 相关阅读:
    c++中sort等算法中比较操作的规则
    数据结构(c++)(1)-- 栈
    Problem 10: Summation of primes
    Problem 9: Special Pythagorean triplet
    Problem 7: 10001st prime
    Problem 8: Largest product in a series
    Problem 5: Smallest multiple
    Problem 6: Sum square difference
    Problem 4: Largest palindrome product
    Problem 3: Largest prime factor
  • 原文地址:https://www.cnblogs.com/windy2008/p/1987545.html
Copyright © 2011-2022 走看看