簡體   English   中英

C#:Thread.Sleep無法正常工作

[英]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(),並且您可能還想向自己發送計時器消息而不是睡覺。

一些示例代碼在這里:

http://www.codeproject.com/KB/cs/A_Custom_Message_Box.aspx

當您調用showdialog()時,睡眠永遠不會被調用,窗體使調用線程等待,直到窗體中的代碼關閉窗口。 關閉窗體中包含代碼的窗口,事情將按預期運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM