我试图使用加载gif图像的加载屏幕在windows的形式,我希望加载屏幕显示5秒,我试图实现与线程。sleep()函数,但问题是一切都停止在当前的winForm包括gif图像本身。我想延迟5秒的加载时间与动画gif图像工作
由于您所描述的问题,您不想使用Thread.Sleep
。在UI程序中,Thread.Sleep
几乎从来不是正确答案。
你想使用的是一个计时器,它在5s后引发一个事件,然后停止自己,或者使用await Task.Delay
在内部包装一个计时器。
你还需要小心确保你的加载窗口不会成为你的应用程序的主窗口。
thread . sleep()阻塞当前线程(即:UI线程)。你可以使用这个使用定时器的wait方法。
public void wait(int milliseconds)
{
var timer1 = new System.Windows.Forms.Timer();
if (milliseconds == 0 || milliseconds < 0) return;
timer1.Interval = milliseconds;
timer1.Enabled = true;
timer1.Start();
timer1.Tick += (s, e) =>
{
timer1.Enabled = false;
timer1.Stop();
};
while (timer1.Enabled)
{
Application.DoEvents();
}
}