XML | HTML | TXT
您当前位置:软件开发 >> 新闻动态 >> 软件开发行业资讯 >> 浏览文章

c#通用多线程基类,以队列形式

  多线程这个概念大家都很熟悉,对于winform的开发人员来说.用的还是多的.但估计都是用Timer,或者backgroundWorker.

  你是否曾经想过,写一个基类,然后....一用到多线程的时候,就马上能用上呢.

  没错,福利来了,这面我为大家写了多线程的一个基类.只有你用到多线程,下面的代码肯定能帮到你很多忙

  1.从构造函数来看,处理的是一个确定的列表.没错.这个多线程只能处理已经确定的列表,你是否会问.可不可以一边添加,一边处理呢?(呵呵,可以,请联系楼主,当然你也可以自己写,是吧?!)

  public QueueThreadBase(IEnumerable<T> collection)

  2.提供撤销的功能

      /// <summary>

  /// 取消=True

  /// </summary>

  public bool Cancel { get; set; }

  3.提供线程个数修改功能

  /// <summary>

  /// 线程数

  /// </summary>

  public int ThreadCount

  {

  get { return this.m_ThreadCount; }

  set { this.m_ThreadCount = value; }

  4.提供多种事件响应,如单个完成,全部完成的事件

  /// <summary>

  /// 全部完成事件

  /// </summary>

  public event Action<CompetedEventArgs> AllCompleted;

  /// <summary>

  /// 单个完成事件

  /// </summary>

  public event Action<T, CompetedEventArgs> OneCompleted;

  5.提供完成的百分率

  /// <summary>

  /// 完成事件数据

  /// </summary>

  public class CompetedEventArgs : EventArgs

  {

  public CompetedEventArgs()

  {

  }

  /// <summary>

  /// 完成百分率

  /// </summary>

  public int CompetedPrecent { get; set; }

  /// <summary>

  /// 异常信息

  /// </summary>

  public Exception InnerException { get; set; }

  }

  6.提供终止线程的方式,继续/单线程终止/全部终止

  /// <summary>

  /// dowork结果枚举

  /// </summary>

  public enum DoWorkResult

  {

  /// <summary>

  /// 继续运行,默认

  /// </summary>

  ContinueThread = 0,

  /// <summary>

  /// 终止当前线程

  /// </summary>

  AbortCurrentThread = 1,

  /// <summary>

  /// 终止全部线程

  /// </summary>

  AbortAllThread = 2

  }


手机:18678812288 E-Mail:1069706080@qq.com
地址:山东省济南市舜耕路泉城公园东门园内向北50米 鲁ICP备07011972号 版权所有2008-2013 山东赢德信息科技有限公司