事件重复绑定是在Silverlight2应用程序开发过程中,开发者容易忽视,时常会为整个Silverlight2应用程序产生重大问题的原因,如果你发现你的Silverlight2应用程序在随着运行过程时间增长而开始变慢时,你就需要考虑代码逻辑是否有事件的重复绑定.
绑定一个事件通常是:
void Page_Loaded(object sender,RoutedEventArgs e)
{
cli.GetAllProductsCompleted += new EventHandler
(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(cli_GetAllProductsCompleted);
cli.GetAllProductsAsync();
}
这样控件的eventHandler永远只会绑定一次,即使你重新实例化这个对象,它那的构造函数只会执行一次.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。