Silverlight 2 学习笔记之事件的重复绑定问题
?
事件重復(fù)綁定是在Silverlight2應(yīng)用程序開發(fā)過程中,開發(fā)者容易忽視,時常會為整個Silverlight2應(yīng)用程序產(chǎn)生重大問題的原因,如果你發(fā)現(xiàn)你的Silverlight2應(yīng)用程序在隨著運(yùn)行過程時間增長而開始變慢時,你就需要考慮代碼邏輯是否有事件的重復(fù)綁定.
?
綁定一個事件通常是:
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頁面中應(yīng)用了這個控件,那么上面的綁定事件代碼,就會在每次觸發(fā)Loaded事件時運(yùn)行,后果是當(dāng)你觸發(fā)上面的事件就會產(chǎn)生N++次的eventHandler,這會使你的事件進(jìn)入一個排隊狀態(tài),同時你的Silverlight2應(yīng)用程序也會變得越來越慢.
正確的方法是在用戶控件的構(gòu)造函數(shù)里聲明事件:
pubic Page()
{
InitializeComponent();
cli.GetAllProductsCompleted += new EventHandler<GetAllProductsCompletedEventArgs>(cli_GetAllProductsCompleted);
cli.GetAllProductsAsync();?????
}??????
這樣控件的eventHandler永遠(yuǎn)只會綁定一次,即使你重新實例化這個對象,它那的構(gòu)造函數(shù)只會執(zhí)行一次.
轉(zhuǎn)載于:https://www.cnblogs.com/slteam/archive/2008/11/21/1338550.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Silverlight 2 学习笔记之事件的重复绑定问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 真菌会存活于被子上吗
- 下一篇: 课程结束