我有這樣的代碼:如何僅在第一個結束時播放聲音文件?
MediaElement player = new MediaElement();
Windows.Storage.StorageFolder folder;
Windows.Storage.StorageFile file;
string FileName = "";
private async void Play(string Tno, string Cno)
{
folder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("Assets");
for (int i = 1; i <= 4; i++)
{
switch (i)
{
case 1:
FileName = "Sound\\mysound1.wav";
break;
case 2:
FileName = "Sound\\mysound2.wav";
break;
case 3:
FileName = "Sound\\mysound3.wav";
break;
case 4:
FileName = "Sound\\mysound4.wav";
break;
}
file = await folder.GetFileAsync(FileName);
player.SetSource(await file.OpenAsync(Windows.Storage.FileAccessMode.Read), file.ContentType);
player.Play();
}
}
它播放聲音 「mysound4.wav」。 當我追蹤代碼時,它會過快地播放4個文件,而不會有任何延遲。 那麼我怎樣才能播放第二個文件,只有當第一個完成?
如果是我我會包裹在描述符包裝類持有文件,例如路徑上的數據每個WAV ,持續時間等...將包裝器排隊到知道何時出隊的特殊隊列(您必須記住上次時間項目已過期並檢查持續時間是否已結束)並播放一個項目 – ilansch
嘗試使用Mediaelmement的CurrentState屬性:https ://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.mediaelement#Windows_UI_Xaml_Controls_MediaElement_CurrentState –
如果在多線程環境中調用此方法會怎麼樣?你一次只需要一個媒體播放。 – ilansch