2017-01-26 7 views
0

Я пытаюсь воспроизвести звук перед закрытием моей программы. Я установил этот звук для своей кнопки выхода. Вот мой код (я использовал библиотеку WMPLib):C# Воспроизведение звука перед закрытием формы

private void button1_Click(object sender, EventArgs e) 
{ 
     WindowsMediaPlayer btnPlayer = new WindowsMediaPlayer(); 
     btnPlayer.URL = "Wrong.wav"; 
     btnPlayer.controls.play(); 
     //Thread.Sleep(2000); 
     this.Close(); 
} 

Моей проблемы: Он выходит сразу и не воспроизводит звук. Пожалуйста помоги! Спасибо.

+0

Использование '' thread' или асинхронном method' для воспроизведения звука , Когда закончится работа метода, а затем закройте форму. –

+0

Попробуйте добавить таймер с секундой, затем закройте форму – mindOfAi

+0

, почему эта строка закомментирована: Thread.Sleep (2000); –

ответ

1

Ваша проблема заключается в том, что WindowsMediaPlayer.Play немедленно возвращается.

Вы должны подписаться на событие изменения состояния, как это:

btnPlayer.PlayStateChange += this.PlayStateChange; 

И:

private void PlayStateChange(int NewState) 
{ 
    if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped) 
    { 
     this.Close(); 
    } 
} 

Это все here

+0

Это действительно работает !! Спасибо за вашу помощь. –