C#多线程Thread

本文以winform作为案例  

private void button1_Click(object sender, EventArgs e)
{
       Debug.WriteLine($"button1_Click start id为{Thread.CurrentThread.ManagedThreadId.ToString("00")}***********");
       Thread t1 = new Thread(doSomething);
       Thread t2 = new Thread(doSomething);
       Thread t3 = new Thread(doSomething);//doSomething是一个极其耗cpu资源的计算方法。
       t1.Name = "t1";
       t2.Name = "t2";
       t3.Name = "t3";
       t1.Start(t1);
       t2.Start(t2);
       t3.Start(t3);

       //此处,开启多线程3个,来执行action       
       t1.join();//阻塞主线程,直到t1线程执行完毕,下方代码才会执行(在此期间,窗体页面是无法拖动的,因为主线程处于等待中。)。
       //需要注意的是:由于多线程具有无序性,所以此处三个线程的执行顺序,会通过clr请求操作系统来处理,所以每次点击后,顺序也不尽相同
    
       Debug.WriteLine($"button1_Click end id为{Thread.CurrentThread.ManagedThreadId.ToString("00")}***********");

}

 

posted @ 2022-07-11 14:01  语梦·添香  阅读(67)  评论(0编辑  收藏  举报