a29343539 2018-09-18 19:23 采纳率: 80%
浏览 720
已采纳

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

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

  • 写回答

2条回答 默认 最新

  • 发个福福 2018-09-19 01:59
    关注

    其他线程等待的话 挂起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");
                }
            }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测