如何等待线程使用.NET完成?

如何等待线程使用.NET完成?

在C#中,我从来没有真正使用过线程,在C#中,我需要有两个线程,以及主UI线程。基本上,我有以下几点。

public void StartTheActions(){
  //Starting thread 1....
  Thread t1 = new Thread(new ThreadStart(action1));
  t1.Start();

  // Now, I want for the main thread (which is calling `StartTheActions` method) 
  // to wait for `t1` to finish. I've created an event in `action1` for this. 
  // The I wish `t2` to start...

  Thread t2 = new Thread(new ThreadStart(action2));
  t2.Start();}

所以,本质上,我的问题是如何让一个线程等待另一个线程完成。做这件事最好的方法是什么?


红糖糍粑
浏览 477回答 3
3回答

慕村9548890

前两个答案很好,并且适用于简单的场景。然而,还有其他方法来同步线程。以下内容也将发挥作用:public void StartTheActions(){     ManualResetEvent syncEvent = new ManualResetEvent(false);     Thread t1 = new Thread(         () =>         {             // Do some work...             syncEvent.Set();         }     );     t1.Start();     Thread t2 = new Thread(         () =>         {             syncEvent.WaitOne();             // Do some work...         }     );     t2.Start();}ManualResetEvent是各种各样的威特汉德尔.NET框架必须提供。它们可以提供比简单但非常常见的工具(如lock()/Monitor、Thread.Join等)更丰富的线程同步功能。它们还可以用于同步多个线程,例如协调多个“子”线程的“主”线程、相互依赖于多个同步阶段的多个并发进程,等等。
打开App,查看更多内容
随时随地看视频慕课网APP