C#:Thread.Sleep不工作

Mol*_*eim 0 c# forms audio multithreading

我有一些代码,用于显示一段时间的表格并播放声音.但表格保持开放.

    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();
    }
Run Code Online (Sandbox Code Playgroud)

它只是保持打开状态不关闭或隐藏.ImageContainer是一个带有PictureBox的窗体,名为imgView.我需要它在关闭之前超时1秒.

Cod*_*lla 5

这条线:

ic.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

使表单以模式方式显示,以便该方法阻止并阻止其他所有内容运行,直到表单关闭.

将该行更改为:

ic.Show();
Run Code Online (Sandbox Code Playgroud)

这是非模态的,方法的其余部分将完成.