今天研究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);
});
}
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);
}
//这个可以写成成员变量,我这里只是为了好区分
System.ComponentModel.AsyncOperation asyncOper = System.ComponentModel.AsyncOperationManager.CreateOperation(null);
asyncOper.Post(result =>
{
txtCalc.Text = string.format(“result “{0}”,i);
}, null);
}
3.BackgroundWorker
参考
MSDN上的文章的
(http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker(VS.95).aspx) |