多線程(二)啟動線程:需要傳參和不需要傳參兩種情況
阿新 • • 發佈:2018-10-27
void ise tel 線程 reg val adl 方法 委托
1、不需要傳參:
class Program7 { private static void ExecuteInForeground() { DateTime start = DateTime.Now; var sw = Stopwatch.StartNew(); Console.WriteLine("Thread {0}: {1}, Priority {2}", Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.ThreadState, Thread.CurrentThread.Priority);do { Console.WriteLine("Thread {0}: Elapsed {1:N2} seconds", Thread.CurrentThread.ManagedThreadId, sw.ElapsedMilliseconds / 1000.0); Thread.Sleep(500); } while (sw.ElapsedMilliseconds <= 5000); sw.Stop(); } static void Main7777(string[] args) { //如果該方法不具有任何參數,則傳遞ThreadStart委托給構造函數。 //使用的是這個構造函數 //public delegate void ThreadStart() var th = new Thread(ExecuteInForeground); th.Start(); Thread.Sleep(1000); Console.WriteLine("Main thread ({0}) exiting...", Thread.CurrentThread.ManagedThreadId); Console.ReadLine(); } }
2、需要傳參:
class Program8 { private static void ExecuteInForeground(Object obj) { int interval; try { interval = (int)obj; } catch (InvalidCastException) { interval = 5000; } DateTime start = DateTime.Now; var sw = Stopwatch.StartNew(); Console.WriteLine("Thread {0}: {1}, Priority {2}", Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.ThreadState, Thread.CurrentThread.Priority); do { Console.WriteLine("Thread {0}: Elapsed {1:N2} seconds", Thread.CurrentThread.ManagedThreadId, sw.ElapsedMilliseconds / 1000.0); Thread.Sleep(500); } while (sw.ElapsedMilliseconds <= interval); sw.Stop(); } static void Main(string[] args) { //如果該方法具有參數,則傳遞ParameterizedThreadStart委托給構造函數。 //使用的是這個構造函數 //public delegate void ParameterizedThreadStart(object obj) var th = new Thread(ExecuteInForeground); th.Start(4500); Thread.Sleep(1000); Console.WriteLine("Main thread ({0}) exiting...", Thread.CurrentThread.ManagedThreadId); Console.WriteLine("主線程執行完畢"); Console.ReadLine(); } }
多線程(二)啟動線程:需要傳參和不需要傳參兩種情況