电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

如何在Worker thread中更新UI


发布日期:2018/1/8
 

Silverlight 中调用服务全部采用异步方式在调用 WCF 时似乎没有什么问题

但是如果要用一个 WebRequest 对象去向某个页面 Post 一些内容然后获得回应

就会发现在 Worker thread 中将无法更新 UI

在 Windows Forms 里可以用 ControlInvoke 但是 Silverlight 没有这个

Silverlight 中有更好的办法DependencyObject 类有一个属性 Dispatcher可以通过它来更新相关 UI 对象

比如可以这样写

(假设是在上传一个文件后更新文件列表) private void UpdateFileList(int newFileId)

{

//

}

private delegate void UpdateFileListDelegate(int newFileId);

// Worker thread

void ResponseReady(IAsyncResult asyncResult)

{

//

// 更新文件列表

listFilesDispatcherBeginInvoke(

new UpdateFileListDelegate(UpdateListFile) newFileId

);

}

注意这个 BeginInvoke 方法很先进 他可以接受任何的 delegate还能传递任意数目的参数过去

这里传了一个简单的 newFileId

上一篇:Net绘图如何给图片增加透明度

下一篇:单例类助手(代码)