c# - Thread.Sleep(300) 无法正常工作

标签 c# winforms multithreading sleep

我想让它执行第一部分代码,然后让图片框可见,暂停3秒,隐藏图片框,然后执行剩下的代码:

// first part of the code here
pb_elvisSherlock.Visible = true;
Thread.Sleep(300);
pb_elvisSherlock.Visible = false;
// rest of the code here

但是它执行了整个代码块然后才暂停。有什么想法吗?

谢谢!

最佳答案

如果您试图让 PictureBox 出现 3 秒,您可能希望您的应用程序在这段时间内保持响应。所以使用 Thread.Sleep 不是一个好主意,因为您的 GUI 线程在休眠时不会处理消息。

更好的选择是将 System.Windows.Forms.Timer 设置为 3000 毫秒,以便在 3 秒后隐藏 PictureBox 而不会阻塞您的 GUI。

例如,像这样:

pb.Visible = true;
var timer = new Timer();
timer.Tick += () => { pb.Visible = false; timer.Stop(); };
timer.Interval = 3000;
timer.Start();

关于c# - Thread.Sleep(300) 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4510397/

相关文章:

c# - xperf WinDBG C# .NET 4.5.2 应用程序 - 了解进程转储

c# - 你如何取消提升子进程的特权

c# - winform 中的字段验证

c# - BufferedGraphics 闪烁

javascript - NodeJs/expressjs : Run lengthy code in a callback

c - 在Linux C中使用相同代码的多个线程处理大数据

c# - 将 Func<T, String> 转换为 Func<T, bool>

winforms - 在 winforms 设计器中,我可以关闭烦人的双击 -> 事件处理程序创建背后的代码吗?

c# - 如何将图片框部分覆盖在表单控件上

c - 这个死锁隐藏在哪里?