您身边的软件定制专家--9年开发经验为您护航

18678812288
0531-88887250

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

文章作者:济南软件开发 时间:2016年11月08日

  多线程这个概念大家都很熟悉,对于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
登陆网址:www.jnydkj.cn。
联系人:王经理。