gpt4 book ai didi

c# - WaitOne() 不在 ManualResetEvent 中等待

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:05 28 4
gpt4 key购买 nike

我认为它不是在 run.waitOne() 等待;

这里在处理代码行时,假设我想通过单击暂停按钮暂停这些代码行。它应该再次等待我单击相同的暂停以恢复相同的线程。但它根本不等待。任何想法实现这个目标?

  ManualResetEvent run=new ManualResetEvent(false);
bool flag=true;

StartButton_Click(object sender,EventArgs e)
{

ThreadStart ts=new ThreadStart(startprocess);
Thread th=new Thread(ts);
th.Start();
}



private void StartProcess()
{
while(true)

{

if (parentform != null)
{
TestForm(parentform);
parentform = null;
}

else
{
if (a[0] == true)
{
value[0] = method1();//method1 return a double value
Thread.Sleep(500);
}
if (a[1] == true)
{
value[1] =method2();
Thread.Sleep(500);
}
if (a[2] == true)
{
value[2] = method3();
Thread.Sleep(500);
}
if (a[3] == true)
{
value[3] = method4();
Thread.Sleep(500);
}
if (a[4] == true)
{
value[4] =method5();
Thread.Sleep(500);
}
if (a[5] == true)
{
value[5] = method6();
Thread.Sleep(500);
}

run.WaitOne();
timer1.Stop();
DateTime now = DateTime.Now;
string datetime = Convert.ToString(now);
database.InsertTest(datetime,value[0], value[1], value[2], value[3], value[4],value[5]);


}
}

}

private void Pausebutton_Click(object sender, EventArgs e)
{

if (flag)
{
timer1.Enabled = true;
run.Set();
flag = false;

}
else
{
timer1.Enabled = false
run.Reset();
flag = true;

}

}

最佳答案

您以错误的方式设置了ResetSet - 如果它已经在等待,您正试图让它等待.. .否则,您正在设置事件,说“继续”。

我还要补充一点,依赖线程的状态不是一个好主意 - 您应该跟踪您是否逻辑上暂停,并相应地设置/重置事件。否则,您会遇到尴尬的情况,快速连续两次单击按钮可能暂停然后取消暂停,或者它可能只是暂停两次。

关于c# - WaitOne() 不在 ManualResetEvent 中等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12209580/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com