thread是什么 如何在Worker thread中更新UI
如何在Worker thread中更新UI
Silverlight 中调用服务全部采用异步方式 在调用 WCF 时似乎没有什么问题
但是如果要用一个 WebRequest 对象去向某个页面 Post 一些内容 然后获得回应
就会发现在 Worker thread 中将无法更新 UI
在 Windows Forms 里 可以用 Control Invoke 但是 Silverlight 没有这个
Silverlight 中有更好的办法 DependencyObject 类有一个属性 Dispatcher 可以通过它来更新相关 UI 对象
比如可以这样写
(假设是在上传一个文件后更新文件列表) private void UpdateFileList(int newFileId) { // } private delegate void UpdateFileListDelegate(int newFileId); // Worker thread void ResponseReady(IAsyncResult asyncResult) { // // 更新文件列表 listFiles Dispatcher BeginInvoke( new UpdateFileListDelegate(UpdateListFile) newFileId ); }
注意这个 BeginInvoke 方法很先进 他可以接受任何的 delegate 还能传递任意数目的参数过去

lishixinzhi/Article/program/net/201311/13641