星期天 十二月 20, 2009 11:13

cSharp中给线程传递参数

Posted by 邵 明博

在c#中如何给线程传递参数呢?其实很简单。一般来说可以采用2种方式:

  • 使用带parameterizeThreadStart委托参数的Thread构造函数
  • 定制一个类,通过该类的构造函数初始化想要传递的参数,再将该参数应用该类的方法。把线程的方法定义为该类实例的方法即可。

下面是一个Demo :

        public static void Main()
        {
            //1.使用一个带参数的委托ParameterizedThreadStart来初始化Thread
            myData data = new myData();
            data.Message = "new Info";
            new Thread(paralizeThread).Start(data);
            //2.通过初始化一个类的字段,将该类的方法封装到线程中去
            new Thread(new myThreadClass("new info2").ThreadMethod).Start();
 
        }
        //类或结构都行
        struct myData
        {
            string message;
 
            public string Message
            {
                get { return message; }
                set { message = value; }
            }
        }
 
        static void paralizeThread(object o)
        {
            myData data = (myData)o;
            Console.WriteLine("Thread {1} received a Parameter : {0}",data.Message,Thread.CurrentThread.ManagedThreadId);
        }
 
        class myThreadClass
        {
            string _message;
            public myThreadClass(string message)
            {
                this._message = message;
            }
 
            public void ThreadMethod()
            {
                Console.WriteLine("Thread {1} received a Parameter : {0}", this._message, Thread.CurrentThread.ManagedThreadId);
            }
        }

Comment Form