private AutoResetEvent[] _endReport;
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(
() =>
{
while (true)
{
_endReport = new AutoResetEvent[1] { new AutoResetEvent(false) };
bool bolWaitTimeOut = false;
//监听这个线程是否有返回结果
bolWaitTimeOut = !WaitHandle.WaitAll(_endReport, 10 * 1000, false);
if (bolWaitTimeOut)
{
_endReport[0].Set();
this.txtLog.Text += "Button execute is timeout! Current command" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "\n";
}
this.txtLog.Text += "开始监测动作了" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "\n";
}
}
);
thread.Start();
}
private void button2_Click(object sender, EventArgs e)
{
Thread thread = new Thread(
() =>
{
//假设返回了结果,用下面这句来通知等待WaitHandle.WaitAll
_endReport[0].Set();
}
);
thread.Start();
}
C# WaitHandle.WaitAll 的实例
于 2023-03-16 16:01:59 首次发布