Silverlight - 在非UI線程中使用Dispatcher更新UI對象(轉)

今天研究silverlight異步調用方法,返回記錄總數,更新分頁控件,研究了很久,出現了跨線程訪問的錯誤,才知道不能直接更新。

http://m.cnblogs.com/20267/1420156.html?full=1

在這裏面查找到了方法,鬱悶一天的心情總算好起來了。

Silverlight中 非UI線程更新UI 的幾種方法:Delegate, AsyncOperation,BackgroundWorker

1. delegate

void DoShow(i){
    this.Dispatcher.BeginInvoke(
                            delegate {
                                   txtCalc.Text = string.format(“result “{0}”,i);
                            });
}

2.AsyncOperation

void DoShow(i){
    //這個可以寫成成員變量,我這裏只是爲了好區分
    System.ComponentModel.AsyncOperation asyncOper = System.ComponentModel.AsyncOperationManager.CreateOperation(null);
    asyncOper.Post(result =>
            {
                txtCalc.Text = string.format(“result “{0}”,i);
            }, null);
}

3.BackgroundWorker

http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker(VS.95).aspx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章