求C#,简单范例:当一线程执行PPPOE重拨,其他线程,等待完成拨号后再做唤醒

三个线程是一样的代码,执行范围各不同。
都有因为某条件,则执行拨号,如何当触发时,
让其他线程作等待,等待PPPOE拨号完成,再唤醒继续执行。
而不做重复拨号,导致BUG。
请教简单点的范例,谢谢回答。
WinForm 菜鳥

其他线程等待的话 挂起suspend函数被否决 所以用全局信号好些
一楼说的对 也可以这样:条件触发时,把拨号任务交给其中一个线程,线程一得到信号,当前就没有拨号任务了
//当前是否有拨号任务 条件触发时变为true 线程进行入处理时变为false
private bool havepppoeEvent = false;

    //触发条件
    private void button1_Click(object sender, EventArgs e)
    { Thread th1 = new Thread(th1Proc);
        th1.Start();
        Thread th2 = new Thread(th2Proc);
        th2.Start();
        Thread th3 = new Thread(th3Proc);
        th3.Start();
        havepppoeEvent = true;
    }

    private void th1Proc()
    {
        while (true)
        {
            if (!havepppoeEvent)
            {
                Thread.Sleep(10);
                continue;
            }
            else//进行处理
            {
                havepppoeEvent = false;

                //线程1执行操作
                MessageBox.Show("i am th1");
            }
        }
    }
    private void th2Proc()
    {
        while (true)
        {
            if (!havepppoeEvent)
            {
                Thread.Sleep(10);
                continue;
            }
            else
            {
                havepppoeEvent = false;

                //线程2执行操作
                MessageBox.Show("i am th2");
            }
        }
    }
    private void th3Proc()
    {
        while (true)
        {
            if (!havepppoeEvent)
            {
                Thread.Sleep(10);
                continue;
            }
            else
            {
                havepppoeEvent = false;

                //线程3执行操作
                MessageBox.Show("i am th3");
            }
        }
    }

全局变量开关就行了,拨号时设置为true,其他2个线程判断变量为true就continue不执行代码逻辑

拨号成功后设置开关为false