none
想问下BackgroundWorker组件一般会不会造成死锁的问题 RRS feed

  • 问题

  • 如题,我知道一般的创建线程的方法有: 1委托   2线程池   3线程类  4backgroundworker 组件

    对于新手来说最好应该用哪一种方法呢?具体用在哪种情况

    2011年8月8日 14:09

答案

  • 您好,CLR的线程只分为前台和后台线程。

    是否死锁是由资源竞争决定的,而不是采用哪种类型的线程。

    委托,线程池和backgroundworker都是后台线程。线程类产生的是前台的线程。

    通常建议使用后台线程。

    backgroundworker由于继承了Componet,所以它可以出现在UI的工具栏中,实现拖拽,方便设计和编程。

    2011年8月8日 15:23
    版主
  • dear

    建议都要会使用,写多线程必备委托、线程类或线程池;backgroundworker则是控件可以让你省掉很多代码,个人感觉没那样重要

    线程死锁跟你使用的类别一点关系都没有,而是跟同步机制有关,请参考依下列联结:

    http://www.dotblogs.com.tw/yc421206/archive/2011/01/18/20878.aspx

     


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年8月8日 18:31
  • 昨天用backgroundworker做了一个小实验,感觉好像简单一点
    是这样的,因为它继承了Componet.
    2011年8月13日 13:19
    版主

全部回复

  • 您好,CLR的线程只分为前台和后台线程。

    是否死锁是由资源竞争决定的,而不是采用哪种类型的线程。

    委托,线程池和backgroundworker都是后台线程。线程类产生的是前台的线程。

    通常建议使用后台线程。

    backgroundworker由于继承了Componet,所以它可以出现在UI的工具栏中,实现拖拽,方便设计和编程。

    2011年8月8日 15:23
    版主
  • dear

    建议都要会使用,写多线程必备委托、线程类或线程池;backgroundworker则是控件可以让你省掉很多代码,个人感觉没那样重要

    线程死锁跟你使用的类别一点关系都没有,而是跟同步机制有关,请参考依下列联结:

    http://www.dotblogs.com.tw/yc421206/archive/2011/01/18/20878.aspx

     


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年8月8日 18:31
  • 昨天用backgroundworker做了一个小实验,感觉好像简单一点
    2011年8月9日 1:26
  • 昨天用backgroundworker做了一个小实验,感觉好像简单一点
    是这样的,因为它继承了Componet.
    2011年8月13日 13:19
    版主