我目前正在使用UWP使用C#进行项目。 我需要立即播放MP3文件,但是如果我单击应用程序中的按钮,则需要立即播放。 因此,我创建了一个“加载MP3”按钮,该按钮运行以下方法: load MP3 method
private async void open_MP3_Click(object sender, RoutedEventArgs e)
{
mp3.AudioCategory = Windows.UI.Xaml.Media.AudioCategory.Media;
var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.List;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.ComputerFolder;
picker.FileTypeFilter.Add(".mp3");
StorageFile sf = await picker.PickSingleFileAsync();
var stream = await sf.OpenAsync(FileAccessMode.Read);
mp3.SetSource(stream, sf.ContentType);
//await Task.Delay(3500);
//mp3.Pause();
}
如果我运行此代码,则选择的歌曲将立即播放,而无需单击我创建的播放按钮。
如果我在mp3.SetSource()
行设置了一个断点,该代码将不会立即播放歌曲。我尝试使用mp3.Pause()
方法解决该问题,但必须插入350 ms的延迟才能正常工作。如果我选择延迟时间长(例如此处的3500ms),则歌曲会开始播放,并在3.5秒后停止播放。
由于我必须将歌曲的开始恰好计时到毫秒,以便我的项目正常工作,因此延迟方法对我而言并不理想。有没有人知道SetSource()
方法有什么问题?
答案 0 :(得分:2)
MediaElement
控件具有一个AutoPlay
属性,默认情况下将其设置为true
(请参见documentation)。这意味着无论您何时设置源,它都将在加载源后立即自动开始播放。为避免这种情况,只需将AutoPlay
属性设置为false:
mp3.AutoPlay = false;