using System;
using System.Threading;
namespace ThreadManagement
{
/// <summary>
/// 多线程管理类
/// 介绍:通过委托delegate把外部方法引入类内(无限制的方法实现)。
/// 通过接口把参数引入类内(无限制的对象实现)。
/// 代替了通用的多线程思路,对于参传递也更灵活。线程控制也更灵活方便。
/// </summary>
public class ThreadManager
{
/// <summary>
/// 带有接口参口参数的方法
/// </summary>
public delegate void MyMethod(System.Collections.ICollection gIC);
/// <summary>
/// 定义具体的方法
/// </summary>
MyMethod mMethod = null;
/// <summary>
/// 实现线程(如果更多线程可考虑线程数组)
/// </summary>
System.Threading.Thread mThread = null;
/// <summary>
/// 方法参数(接口)
/// </summary>
System.Collections.ICollection mIC = null;
/// <summary>
/// 第一步:传入方法,传入参数。
/// </summary>
/// <param name="gMethod">方法(自定义的委托)</param>
/// <param name="gIC">接口参数</param>
public void SetParamAndCreateThread(MyMethod gMethod,System.Collections.ICollection gIC)
{
mMethod = gMethod; //指定方法
mIC = gIC; //指定参数
//创建线程,指定target指定成类内有方法实施。
//mThread = new Thread(new System.Threading.ThreadStart(Implement));
}
/// <summary>
/// Private:类内的方法实现
/// </summary>
private void Implement()
{
//可加入开始控制
mMethod(mIC);
//可加入结束控制
}
/// <summary>
/// 开始执行线程(也可在此创建线程并开始执行)
/// 如果在此处实现创建线程,则可连续执行Start。
/// </summary>
public void Start()
{
mThread = new Thread(new System.Threading.ThreadStart(Implement));
mThread.Start();
}
}
}
///
///类的实现
///
//外部方法
public void Msg(System.Collections.ICollection gIC)
{
foreach(object obj in gIC)
{
Console.WriteLine(obj.ToString());
}
}
//实例化对象
ThreadManager tm = new ThreadManager();
//创建接口对象
Hashtable ht = new Hashtable();
//具体的执行方法
private void btn1_Click(object sender, System.EventArgs e)
{
ht.Add("aa","aa");
ht.Add("bb","bb");
tm.SetParamAndCreateThread(new ThreadManager.MyMethod(Msg),ht);
}
//开始执行
private void btn2_Click(object sender, System.EventArgs e)
{
tm.Start();
}