现在的位置: 首页 > 综合 > 正文

多线程、接口、委托的综合实现

2012年04月30日 ⁄ 综合 ⁄ 共 2068字 ⁄ 字号 评论关闭

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();

}

抱歉!评论已关闭.