在开发Silverligh程式的时候,发现了一个问题。

      先看一段代码:目的很简单,就是在执行查询的时候进行异步处理。

; }
    }

 

      结果发现:在执行第n次查询的时候 MessageBox.Show("Done...");会执行n次.

      原因:这里定义了一个公有的
      ISDApp01Xml.SDApp01XmlSoapClient client = new ISDApp01Xml.SDApp01XmlSoapClient();而后在查询动作时候,为ExecuteQueryCompleted事件添加执行方法,注意到这里用的是典型的多播委托的方式“+=”,也就是说,每执行一次查询,就为此事件添加一个同样的执行方法,从而造成在执行第n次查询的时候,实际上方法执行了n次。   
      解决:
      (1)把service进行私有实例化:在用到的时候再进行实例化,出了作用域,自动“释放”。
      (2)service公有,单是委托方法只能加载一次.
     1.

 client_ExecuteQueryCompleted;
            client.ExecuteQueryAsync(sql);

        }

  2.

 client_ExecuteQueryCompleted;
        }
    }

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2021-11-02
  • 2021-07-25
  • 2021-04-08
  • 2021-07-07
  • 2022-02-05
猜你喜欢
  • 2022-12-23
  • 2021-12-10
  • 2021-05-30
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案