zoukankan      html  css  js  c++  java
  • Silverlight 2 学习笔记之事件的重复绑定问题

    事件重复绑定是在Silverlight2应用程序开发过程中,开发者容易忽视,时常会为整个Silverlight2应用程序产生重大问题的原因,如果你发现你的Silverlight2应用程序在随着运行过程时间增长而开始变慢时,你就需要考虑代码逻辑是否有事件的重复绑定.

    绑定一个事件通常是:

    void Page_Loaded(object sender, RoutedEventArgs e)
    {

    cli.GetAllProductsCompleted += new EventHandler<GetAllProductsCompletedEventArgs>(cli_GetAllProductsCompleted);
    cli.GetAllProductsAsync();     

    }      

    然后定义eventHandler:

    void cli_GetAllProductsCompleted(object sender, GetAllProductsCompletedEventArgs e)
    {


    }

    如果你把上面的代码放在一个XAML用户控件的Loaded事件中,并且在另一个XAML页面中应用了这个控件,那么上面的绑定事件代码,就会在每次触发Loaded事件时运行,后果是当你触发上面的事件就会产生N++次的eventHandler,这会使你的事件进入一个排队状态,同时你的Silverlight2应用程序也会变得越来越慢.

    正确的方法是在用户控件的构造函数里声明事件:

    pubic Page()
    {

    InitializeComponent();
    cli.GetAllProductsCompleted += new EventHandler<GetAllProductsCompletedEventArgs>(cli_GetAllProductsCompleted);
    cli.GetAllProductsAsync();     

    }      

    这样控件的eventHandler永远只会绑定一次,即使你重新实例化这个对象,它那的构造函数只会执行一次.

  • 相关阅读:
    解决linux下打开windows下压缩文件乱码的问题
    vim & emacs 强制修改 root 权限的文件
    在ubuntu下,给 svn diff 一点颜色
    sql优化(一)
    sql优化(二) 索引(一)
    Java反射与思想!
    JDK5.0枚举 泛型 注释
    忘羡的Day9!
    来博客的第二天!
    来博客第一天
  • 原文地址:https://www.cnblogs.com/slteam/p/1338550.html
Copyright © 2011-2022 走看看