BackgroundWorker 和Thread 的关系

N11H11 2009-07-03 04:22:21
一个小程序需要用到一个6线程,我目前是用类似下面的程序来分别运行5个子线程

Dim t As New Thread(AddressOf t1)
t.Start()

如果我要用BackgroundWorker,是不是向窗体中拖入6个BackGroundWorker控件?

BackgroundWorker 和Thread的效率那个高一些?
...全文
356 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuxiangq 2010-09-25
  • 打赏
  • 举报
回复
以前一直用Thread。。。。。。今天才知道有个封装好的控件
scy251147 2009-07-03
  • 打赏
  • 举报
回复
wuyq11 2009-07-03
  • 打赏
  • 举报
回复
BackgroundWorker多线程组件参考
kkun_3yue3 2009-07-03
  • 打赏
  • 举报
回复
BackgroundWorker就是一个高级控件,方便使用Thread,后者是前者的灵魂或基础
直接使用后者难度稍大,但换来的是灵活方便
haiwangstar 2009-07-03
  • 打赏
  • 举报
回复
跨线程访问线程 笔误
跨线程访问控件
haiwangstar 2009-07-03
  • 打赏
  • 举报
回复
给你总结一下:
BackgroundWorker与线程的关系:

1. BackgroundWorker在内部封装了线程.所以你创建了一个BackgroundWorker,就相当于创建一个线程,并且提供一个方法做为任务由它去执行. 而且从名字上看很明显,它是一个后台任务,一定要在单独的线程上运行的.
2.在WINDWOS桌面程序中使用线程时,常常会遇到需要跨线程访问线程的情况,因为WINDOWS的界面控件都不是线程安全的,所以不能直接跨线程访问,虽然.NET提供了BeginInvoke,Invoke的封送方法,但代码仍然较乏味.所以在.NET中,微软提供了对线程封装的组件BackgroundWorker,用这个类时,你可以在它的工作方法中去访问另外线程的控件,不必考虑封送,这是因为它内部帮你封送了.

3. 使用BackgroundWorker时,处理进度显示量容易.

4. 当你执行的任务较简单,不需要复杂控制时使用BackgroundWorker,较为方便;当你要执行的任务需要复杂控制(如线程同步)时,要自己 创建线程.

zhaoweiting0609 2009-07-03
  • 打赏
  • 举报
回复
BackgroundWorker执行单线程的是很可以用
多线程,得用Thread或者用线程池
这个效率都差不多吧
只是使用的方式不一样,BackgroundWorker为两个线程的执行提供了一个好的方式

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧