请问,c#的后台线程有什么意义

q2fdaw2 2011-12-09 10:51:18
Thread.IsBackground 属性:MSDN

请问,设置某个线程为后台线程,有什么实际意义?什么情况下会运用这个设置?
...全文
334 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
吾非大神 2011-12-11
  • 打赏
  • 举报
回复
我有点同意这句话了
“要尽量避免使用前台线程。。”
覃祖甘 2011-12-10
  • 打赏
  • 举报
回复
如果你不用后台進程,比如你點一個按鈕,就必須等待迴應后才能夠做別的動作.
比如你在查數据時,數据庫還沒有來得及給你返回東西,你不用后台進程就是等.

如果你用后台進程了,你查詢和同時,我可以做別的事情,比如我可以打印現有的數据等.
q2fdaw2 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 caozhy 的回复:]

一个线程或者是后台线程或者是前台线程。 后台线程与前台线程类似,区别是后台线程不会防止进程终止。 属于某个进程的所有前台线程都终止后,公共语言运行时就会结束该进程。 所有剩余的后台线程都会停止且不会完成。

MSDN不是解释得很清楚了么?
[/Quote]
请举个简单的例子,哪些时候会用上
吾非大神 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sp1234 的回复:]
前台线程不死,进程不死。但是后台线程则相反,进程想死时,线程先自杀。
[/Quote]

一个进程中的所有前台线程停止运行时,CLR强制终止仍在运行的任何后台线程。

Important:要尽量避免使用前台线程。我有一次接手一个顾问工作,有个应用程序就是不终止。花了几小时研究问题后,才发现是一个UI组件显式地创建了一个前台线程(默认),这正是进程一直不终止的原因。后来修改组件来使用线程池,从而解决了问题。执行效率也提升了。

为同一个问题做了相同的解释,但遇到的问题情况不同,推荐做法也不同。

绿领巾童鞋 2011-12-10
  • 打赏
  • 举报
回复
后台线程可以防止进程关掉后线程还存在的问题。
q2fdaw2 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 aganqin 的回复:]

如果你不用后台進程,比如你點一個按鈕,就必須等待迴應后才能夠做別的動作.
比如你在查數据時,數据庫還沒有來得及給你返回東西,你不用后台進程就是等.

如果你用后台進程了,你查詢和同時,我可以做別的事情,比如我可以打印現有的數据等.
[/Quote]
你说这个意思,就是要用多线程嘛,但不一定非得是后台线程吧,
threenewbee 2011-12-09
  • 打赏
  • 举报
回复
一个线程或者是后台线程或者是前台线程。 后台线程与前台线程类似,区别是后台线程不会防止进程终止。 属于某个进程的所有前台线程都终止后,公共语言运行时就会结束该进程。 所有剩余的后台线程都会停止且不会完成。

MSDN不是解释得很清楚了么?
  • 打赏
  • 举报
回复
如果搞不懂,其实也不必去在意这个。记住尽量不要碰什么“后台线程”就是了。遇到有人写什么“后台线程”,保持高度警惕,一定要仔细测试其bug。
  • 打赏
  • 举报
回复
前台线程不死,进程不死。但是后台线程则相反,进程想死时,线程先自杀。
krenyelang 2011-12-09
  • 打赏
  • 举报
回复
这个没有操作过!

110,571

社区成员

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

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

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