2016-05-21 8 views
0

Как проверить, когда звук, который я сыграл, закончен? Я использую C# .NET WinForms и мой код для воспроизведения звука является:Проверьте, закончен ли звук C#

SoundPlayer s = new SoundPlayer(@"c:\intro.wav"); 
     s.Play(); 

Для тех, кто должен знать, импорт, это using System.Media;

Так что мне нужно знать, когда мой звук закончил а затем мне нужно запустить код. Я знаю, что я мог бы использовать таймер, но я хочу воздержаться от этого по определенным причинам. Спасибо заранее.

ответ

0

По умолчанию SoundPlayer запускается в отдельном потоке, но есть способ воспроизведения звука в текущем потоке. См PlaySync

private SoundPlayer Player = new SoundPlayer(); 
private void loadSoundAsync() 
{ 
    // Note: You may need to change the location specified based on 
    // the location of the sound to be played. 
    this.Player.SoundLocation = "http://www.tailspintoys.com/sounds/stop.wav"; 
    this.Player.LoadAsync(); 
} 

private void Player_LoadCompleted (
      object sender, 
      System.ComponentModel.AsyncCompletedEventArgs e) 
{ 
    if (this.Player.IsLoadCompleted) 
    { 
     this.Player.PlaySync(); 
    } 
} 
2

Вы можете создать задачу и ждет он без блокировки вашего UI нити ...

async void Test() 
{ 
    using (var player = new System.Media.SoundPlayer(@"C:\Windows\Media\Alarm01.wav")) 
    { 
     await Task.Run(() => { player.Load(); player.PlaySync(); }); 
     MessageBox.Show("Finished. Now you can run your code here"); 
    } 
} 
Смежные вопросы