?!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
多线E这个概念大安很熟?对于winform的开发h员来?用的q是多的.但估计都是用Timer,或者backgroundWorker.
你是否曾l想q?写一个基c?然后....一用到多线E的时?马上能用上?
没错,利来了,q面我ؓ大家写了多线E的一个基c?只有你用到多U程,下面的代码肯定能帮到你很多忙
1.从构造函数来?处理的是一个确定的列表.没错.q个多线E只能处理已l确定的列表,你是否会?可不可以一Ҏ?一边处理呢?(呵呵,可以,误pL?当然你也可以自己?是吧?!)
public QueueThreadBase(IEnumerable<T> collection)
2.提供撤销的功?/strong>
/// <summary>
/// 取消=True
/// </summary>
public bool Cancel { get; set; }
3.提供U程个数修改功能
/// <summary>
/// U程?/span>
/// </summary>
public int ThreadCount
{
get { return this.m_ThreadCount; }
set { this.m_ThreadCount = value; }
4.提供多种事g响应,如单个完?全部完成的事?/strong>
/// <summary>
/// 全部完成事g
/// </summary>
public event Action<CompetedEventArgs> AllCompleted;
/// <summary>
/// 单个完成事g
/// </summary>
public event Action<T, CompetedEventArgs> OneCompleted;
5.提供完成的百分率
/// <summary>
/// 完成事g数据
/// </summary>
public class CompetedEventArgs : EventArgs
{
public CompetedEventArgs()
{
}
/// <summary>
/// 完成癑ֈ?/span>
/// </summary>
public int CompetedPrecent { get; set; }
/// <summary>
/// 异常信息
/// </summary>
public Exception InnerException { get; set; }
}
6.提供l止U程的方?l箋/单线E终?全部l止
/// <summary>
/// doworkl果枚D
/// </summary>
public enum DoWorkResult
{
/// <summary>
/// l箋q行Q默?/span>
/// </summary>
ContinueThread = 0,
/// <summary>
/// l止当前U程
/// </summary>
AbortCurrentThread = 1,
/// <summary>
/// l止全部U程
/// </summary>
AbortAllThread = 2
}