多線程這個概念大家都很熟悉,對於winform的開發人員來說.用的還是多的.但估計都是用Timer,或者backgroundWorker. 你是否曾經想過,寫一個基類,然後....一用到多線程的時候,就馬上能用上呢. 沒錯,福利來了,這面我為大家寫了多線程的一個基類.只有你用到多線程,下面的代碼肯定能幫到你很多忙 View Code 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 }