我制作了一种纸牌游戏,可以使用一个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(); }
}
答案 0 :(得分:0)
PlaySync()会阻止UI(如果在UI线程上运行),您是否尝试过Play()?