星星之火

燎原之势不可挡
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年10月6日

摘要: 在以前的章节中,我们不只一次的提到过,不能在非创建UI控件的线程中操作UI元素,否则会和UI控件创建线程(一般是主线程)产生冲突,造成不可预料的后果。该如何解决这个问题呢?除了上一节所讲的BackgroundWorker和Timer以外,微软将Control类实现了ISynchronizeInvoke接口,提供了Invoke和BeginInvoke方法来提供让其它线程更新GUI界面控件的机制。下边还是通过一个例子给大家讲解一下Control.Invoke()和Control.BeginInvoke();首先新建一个WinForm应用程序,在Form窗体上做如下布局:然后,新建一个委托publi 阅读全文

posted @ 2012-10-06 19:37 星星之火116 阅读(1427) 评论(4) 推荐(3) 编辑

摘要: 上一节讲到在实际的编程中某些任务执行完成时间可能较长,比如打开大文件、连接远程计算机或查询数据库,这个时候可能会导致UI界面发生长时间未响应,如果你需要在执行某些任务的同时,还要进行UI界面的响应,BackgroundWorker是您最好的选择,同时,从VS2005开始也BackgroundWorker组件,这使Backgroundworker使用起来更加的方便。下面我会通过一个更新UI界面进度条的例子来向大家逐步的讲解BackgroundWorker类首先新建一个Form应用程序,在UI也添加一个按钮和一个进度条processbar如图所示:然后进入.cs页先声明一个全局的Backgroun 阅读全文

posted @ 2012-10-06 10:13 星星之火116 阅读(2867) 评论(1) 推荐(0) 编辑