C #: Thread.Sleep не работает - PullRequest
       1

C #: Thread.Sleep не работает

0 голосов
/ 07 октября 2011

У меня есть немного кода, который предназначен для отображения формы в течение определенного периода времени и воспроизведения звука.Однако форма остается открытой.

    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 - это Форма с PictureBox, которая называется imgView.Мне нужно, чтобы тайм-аут на 1 секунду, прежде чем он закрывается.

Ответы [ 3 ]

5 голосов
/ 07 октября 2011

Строка:

ic.ShowDialog();

Заставляет форму отображаться в модальном режиме, так что метод блокирует и запрещает выполнение всего остального, пока форма не закроется.

Измените эту строку на:

ic.Show();

Это немодально, и остальная часть метода завершится.

1 голос
/ 07 октября 2011

ShowDialog () является модальным и никогда не возвращается, пока вы не закроете диалоговое окно. Вы хотите Show (), а также вы, вероятно, хотите отправить себе сообщение о таймере вместо сна.

Пример кода здесь:

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

0 голосов
/ 07 октября 2011

Sleep никогда не вызывается, когда вы вызываете showdialog() форма заставляет вызывающий поток ждать, пока код в форме не закроет окно. закройте окно с кодом в вашей форме, и все будет работать так, как вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...