三个线程是一样的代码,执行范围各不同。
都有因为某条件,则执行拨号,如何当触发时,
让其他线程作等待,等待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