【新人】麻烦问一下关于线程Thread.Sleep()用法

技术型萨达哈鲁 2013-02-20 10:41:23
直接上实例,下面是一个错误的实例请帮我更正一下吧:

private void button1_Click(object sender, EventArgs e)
{
Thread myThread;
myThread = new Thread(new ThreadStart(ConsoleH));
myThread.Start();
Thread.Sleep(10000);
}

private void ConsoleH()
{
MessageBox.Show("我想10秒后才弹出此框!");
}

我想使用Thread.Sleep(10000)使它10秒后才弹框,但是发现这样写是不对的,它还是会直接弹框,1秒也不停留,反倒是关闭窗体时会延迟10秒才关闭,我猜测可能这个Thread.Sleep(10000)对myThread这一线程没用,而是对WinForm本身的Application.Run(new Form1())线程有作用,只是猜测,请问应该怎么更正?
...全文
132 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
烈火蜓蜻 2013-02-20
  • 打赏
  • 举报
回复
Thread.Sleep 是休眠当前线程,当你new 一个 Thread的时候,这个new出来的是另外一个线程,所以你应该改成 在MessageBox语句之前加这个Sleep
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
你这样写有啥用,线程在执行,Thread.Sleep根本不影响线程内部执行,要延时也要在线程内部做延时,放到 ConsoleH中
您是说吧Thread.Sleep(10000)放在ConsoleH()函数中吧? private void ConsoleH() { Thread.Sleep(10000); MessageBox.Show("我想10秒后才弹出此框!"); } 成功了!谢谢!!!!非常感谢
bdmh 2013-02-20
  • 打赏
  • 举报
回复
你这样写有啥用,线程在执行,Thread.Sleep根本不影响线程内部执行,要延时也要在线程内部做延时,放到 ConsoleH中

110,534

社区成员

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

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

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