[英]C#: Thread.Sleep Not working
我有一些代碼,可以顯示一段時間的形式並播放聲音。 但是,表格保持打開狀態。
static void Main(string[] args)
{
SoundPlayer sp = new SoundPlayer();
ShowImage(@"Resources\Fish.png", "Fish", 256, 256, 1000);
sp.SoundLocation = @"Resources\fish.wav";
sp.Play();
}
public static void ShowImage(string img, string title, int width, int height, int timeout)
{
ImageContainer ic = new ImageContainer();
ic.imgView.Image = Image.FromFile(img);
ic.Text = title;
ic.Size = ic.imgView.Image.Size;
ic.Height = height;
ic.Width = width;
ic.ShowDialog();
Thread.Sleep(timeout);
ic.Hide();
ic.Opacity = 0;
ic.Dispose();
}
它只是保持打開狀態而不關閉或隱藏。 ImageContainer是一個窗體,其中包含一個名為imgView的PictureBox。 我需要它在關閉之前超時1秒。
該行:
ic.ShowDialog();
使表單以模式方式顯示,從而使方法阻塞並阻止其他所有內容在表單關閉之前運行。
將該行更改為:
ic.Show();
這是非模式的,其余方法將完成。
ShowDialog()是模態的,直到關閉對話框后才返回。 您需要Show(),並且您可能還想向自己發送計時器消息而不是睡覺。
一些示例代碼在這里:
當您調用showdialog()
時,睡眠永遠不會被調用,窗體使調用線程等待,直到窗體中的代碼關閉窗口。 關閉窗體中包含代碼的窗口,事情將按預期運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.