UI无法更新foreach循环C#WPF中首先播放的声音

时间:2018-09-30 12:18:19

标签: c# wpf image audio

我制作了一种纸牌游戏,可以使用一个foreach循环从UI的资源中获取并显示玩家卡片,效果很好。我最近还添加了卡声音,以便在UI中显示每个图像之前先播放声音。但是,总是先播放声音,然后再显示图像。有点烦人...

我使用声音播放器和playsync()。如何强制GUI更新? (在声音之间)

这是一些代码...

开头
//loop
foreach (var player in playerGUIs)....
//Call the sound Card_Sound(); //See below

//Update image player.img1.Source = new BitmapImage(new
Uri(("/Utilities;Component/Resources/" + card_file + ".png"),
UriKind.Relative));


private void Card_Sound()
    { //Play sound System.Threading.Thread.Sleep(800); // First sleep 800 milliseconds

using (FileStream stream = File.Open(@"Resources\dealingcard.wav",
FileMode.Open)) {
    SoundPlayer myNewSound = new SoundPlayer(stream);
           myNewSound.Load();
           myNewSound.PlaySync(); }

}

1 个答案:

答案 0 :(得分:0)

PlaySync()会阻止UI(如果在UI线程上运行),您是否尝试过Play()?