网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

[Silverlight] 如何在 Worker thread 中更新 UI

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/12/13

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

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

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

  在 Windows Forms 里,可以用 Contr ol.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,还能传递任意数目的参数过去。

  这里传了一个简单的 newFileId.

  补充:

  如果需要同时更新多个控件,则可以通过他们共同的祖先控件的 Dispatcher 来调用。

(责任编辑:admin)

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号