为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
红糖糍粑 2019-07-15 09:43:19
如何等待线程使用.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();}所以,本质上,我的问题是如何让一个线程等待另一个线程完成。做这件事最好的方法是什么?
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

前两个答案很好,并且适用于简单的场景。然而,还有其他方法来同步线程。以下内容也将发挥作用:

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等)更丰富的线程同步功能。它们还可以用于同步多个线程,例如协调多个“子”线程的“主”线程、相互依赖于多个同步阶段的多个并发进程,等等。


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 475 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信