winForm程序中WHILE循环会导致窗口无响应

smkl 2018-07-21 01:00:54
在控制台程序中可以这样做

while(true){
thread.Sleep(1000);
Console.Write("等待1000毫秒出现我");
thread.Sleep(3000;)
Console.Write("等待4000毫秒执行我");
}

在winform中怎么实现
用timer控件的话就是

timer1.Interval = 1000;
timer1.Enabled = true;

timer2.Interval = 4000;
timer2.Enabled = true;

private void timer1_Tick(){
messagebox.show("等待1000毫秒出现我");}
private void timer2_Tick(){
messagebox.show("等待4000毫秒出现我");
}
这样子的加过顺序是
等待1000毫秒出现我
等待1000毫秒出现我
等待1000毫秒出现我
等待1000毫秒出现我等待4000毫秒出现我
而不是
等待1000毫秒出现我
等待4000毫秒出现我
怎么做能出现后者的顺序


...全文
537 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
smkl 2018-07-21
  • 打赏
  • 举报
回复
(ˉ▽ˉ;)...上面那个还是错了

timer1.Interval = 1000;
timer2.Interval = 3000;
timer1.Enabled = true;

private void timer1_Tick(){
messagebox.show("等待1000毫秒出现我");
timer1.Enabled = false;
timer2.Enabled = true;
}
private void timer2_Tick(){
messagebox.show("等待4000毫秒出现我");
timer2.Enabled = False;
timer1.Enabled = true;
}
smkl 2018-07-21
  • 打赏
  • 举报
回复
更正

timer1.Interval = 1000;
timer2.Interval = 3000;
timer1.Enabled = true;

private void timer1_Tick(){
messagebox.show("等待1000毫秒出现我");
timer.Enabled = false;
timer2.Enabled = true;
}
private void timer2_Tick(){
messagebox.show("等待4000毫秒出现我");
timer.Enabled = False;
timer1.Enabled = true;
}
smkl 2018-07-21
  • 打赏
  • 举报
回复
我想到了个解决办法

timer1.Interval = 1000;
timer1.Enabled = true;

private void timer1_Tick(){
messagebox.show("等待1000毫秒出现我");
timer.Enabled = false;
timer2.Interval = 3000;
timer2.Enabled = true;
}
private void timer2_Tick(){
messagebox.show("等待4000毫秒出现我");
timer1.Enabled = true;
}

110,538

社区成员

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

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

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