帶參數的多線程的方式


 
        
#region 執行帶一個參數的多線程
            Thread mythread = new Thread(new ParameterizedThreadStart(Calculate));
            mythread.IsBackground = true;       
            mythread.Start(500);
            #endregion

        private void Calculate(object Max)              //帶一個參數的委托函數  
        {
            int max = (int)Max;
            Stopwatch stopwatch = Stopwatch.StartNew();
            for (int i = 0; i < max; i++)
            {
                Thread.Sleep(5);
            }
            stopwatch.Stop();
            long lSearchTime = stopwatch.ElapsedMilliseconds;
            MessageBox.Show(lSearchTime.ToString() + "毫秒");
        }



方式一: 定義一個類,將要傳的參數設置為類的屬性,然后將參數值賦值給類的屬性,將類作為一個參數進行傳達,以下代碼通過兩個參數示例,多個參數一樣,代碼如下

復制代碼
    class MyClass
    {
        public int Max { get; set; }
        public int Min { get; set; }
    }
            #region 第一種方式:執行帶多個參數的多線程
            MyClass model = new MyClass();
            model.Max = 500;
            model.Min = 0;
            Thread mythread1 = new Thread(new ParameterizedThreadStart(CalculateTwo));
            mythread1.IsBackground = true;       
            mythread1.Start(model);
            #endregion
        private void CalculateTwo(object Myclass)              //帶多個參數的委托函數  
        {
            MyClass model = (MyClass)Myclass;
            Stopwatch stopwatch = Stopwatch.StartNew();
            for (int i = model.Min; i < model.Max; i++)
            {
                Thread.Sleep(5);
            }
            stopwatch.Stop();
            long lSearchTime = stopwatch.ElapsedMilliseconds;
            MessageBox.Show(lSearchTime.ToString() + "毫秒");
        }
復制代碼

方式二:lambda表達式的方式,簡單方便,代碼如下:



#region
第二種方式:執行帶多個參數的多線程 Thread mythread2 = new Thread(() => CalculateThree(500, 0)); mythread2.IsBackground = true; //設置為後臺線程,程式關閉后進程也關閉,如果不設置true,則程式關閉,此線程還在內存,不會關閉 mythread2.Start(); #endregion private void CalculateThree(int Max,int Min) //帶多個參數的委托函數 { Stopwatch stopwatch = Stopwatch.StartNew(); for (int i = Min; i < Max; i++) { Thread.Sleep(5); } stopwatch.Stop(); long lSearchTime = stopwatch.ElapsedMilliseconds; MessageBox.Show(lSearchTime.ToString() + "毫秒"); }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM