求助,如何才能在执行一次run2(j)后,暂时10S,再执行run2(j+1).
当执行完一次start1()后,暂停1分钟,再执行下一次start1();用System.Threading.Thread.Sleep(1000) 的话,主窗口会没响应,有其它办法吗?
如果能加入停止按扭,可以终止执行?谢谢。 private void button17_Click(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
start1(); //循环十次
MessageBox.Show("i is " + i);
}
}
private void start1()
{
for (int j = 0; j < 10; j++)
{
run2(j);
}
} private void run2(int h)
{
MessageBox.Show("h is " + h);
}
}
当执行完一次start1()后,暂停1分钟,再执行下一次start1();用System.Threading.Thread.Sleep(1000) 的话,主窗口会没响应,有其它办法吗?
如果能加入停止按扭,可以终止执行?谢谢。 private void button17_Click(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
start1(); //循环十次
MessageBox.Show("i is " + i);
}
}
private void start1()
{
for (int j = 0; j < 10; j++)
{
run2(j);
}
} private void run2(int h)
{
MessageBox.Show("h is " + h);
}
}
{
new System.Threading.Thread(new System.Threading.ThreadStart(delegate
{
for (int i = 0; i < 10; i++)
{
start1(); //循环十次
MessageBox.Show("i is " + i);
}
})).Start(); //多线程
}
用多线程的话,是会同时执行的吧? 我只想 完全 执行一次run2(j)后,暂时10S,再执行run2(j+1).
当 完全 执行完一次start1()后,暂停1分钟,再执行下一次start1();
用多线程的话,是会同时执行的吧? 我只想 完全 执行一次run2(j)后,暂时10S,再执行run2(j+1).
当 完全 执行完一次start1()后,暂停1分钟,再执行下一次start1();
{
...
Application.DoEvents();
}
1.你现在写的程序,是跑在UI线程里的(什么是UI线程,就是你程序的主线程,你显示控件的这个线程)
2.你的程序写在了这个UI线程里,用了一个for循环,然后你想在这个UI停止,又不让界面卡死。
3.分析2里面的需求,这是做不到的,线程,是最小的运行单元,不可能在代码中停止,却在显示上不卡死的。
4.所以你这思路就不对了
5.你需要这样做,启动别的线程,在别的线程里停卡,而不是在UI线程里停止。思路给你了,你自己写吧。