求助:for 多循环 逐条执行 并可以停止

xuxqiang 2012-12-27 12:59:20
求助,如何才能在执行一次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);

}
}
...全文
278 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dacan66 2012-12-27
  • 打赏
  • 举报
回复
给你分析一下, 1.你现在写的程序,是跑在UI线程里的(什么是UI线程,就是你程序的主线程,你显示控件的这个线程) 2.你的程序写在了这个UI线程里,用了一个for循环,然后你想在这个UI停止,又不让界面卡死。 3.分析2里面的需求,这是做不到的,线程,是最小的运行单元,不可能在代码中停止,却在显示上不卡死的。 4.所以你这思路就不对了 5.你需要这样做,启动别的线程,在别的线程里停卡,而不是在UI线程里停止。 思路给你了,你自己写吧。
threenewbee 2012-12-27
  • 打赏
  • 举报
回复
for () { ... Application.DoEvents(); }
gxingmin 2012-12-27
  • 打赏
  • 举报
回复
引用 4 楼 xuxqiang 的回复:
引用 1 楼 gxingmin 的回复:把Sleep放到线程里 C# code?1234567891011 private void button17_Click(object sender, EventArgs e) { new System.Threading.Thread(new System.Threading.……
不会同时执行,你只开了一个线程,又不是开多个线程 这一个线程避开ui线程,所以不影响主窗口的响应
xuxqiang 2012-12-27
  • 打赏
  • 举报
回复
求大神门帮我改改,或给个例子。
xuxqiang 2012-12-27
  • 打赏
  • 举报
回复
求大神门帮我改改,或给个例子。
v夜v风v 2012-12-27
  • 打赏
  • 举报
回复
这是一个流程控制的问题,在timer控件中做多线程。就是在UI的线程外执行
Assassin_ 2012-12-27
  • 打赏
  • 举报
回复
引用 5 楼 yumen3501 的回复:
单独开一个进程 。 运行10s 停止进程
线程
Assassin_ 2012-12-27
  • 打赏
  • 举报
回复
单独开一个进程 。 运行10s 停止进程
xuxqiang 2012-12-27
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
把Sleep放到线程里 C# code?1234567891011 private void button17_Click(object sender, EventArgs e) { new System.Threading.Thread(new System.Threading.ThreadStart(delegate……
用多线程的话,是会同时执行的吧?   我只想  完全  执行一次run2(j)后,暂时10S,再执行run2(j+1).      当 完全  执行完一次start1()后,暂停1分钟,再执行下一次start1();
xuxqiang 2012-12-27
  • 打赏
  • 举报
回复
引用 楼主 xuxqiang 的回复:
求助,如何才能在执行一次run2(j)后,暂时10S,再执行run2(j+1). 当执行完一次start1()后,暂停1分钟,再执行下一次start1(); 用System.Threading.Thread.Sleep(1000) 的话,主窗口会没响应,有其它办法吗? 如果能加入停止按扭,可以终止执行? 谢谢。 C# code?12345……
用多线程的话,是会同时执行的吧? 我只想 完全 执行一次run2(j)后,暂时10S,再执行run2(j+1). 当 完全 执行完一次start1()后,暂停1分钟,再执行下一次start1();
helloworldysn 2012-12-27
  • 打赏
  • 举报
回复
用多线程来做1
gxingmin 2012-12-27
  • 打赏
  • 举报
回复
把Sleep放到线程里
 private void button17_Click(object sender, EventArgs e)       
 {            
     new System.Threading.Thread(new System.Threading.ThreadStart(delegate
     {
        for (int i = 0; i < 10; i++)           
        {                
              start1();   //循环十次              
                 MessageBox.Show("i  is " + i);         
        }       
     })).Start();  //多线程
 }

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧