В настоящее время я работаю над проектом в C # с использованием UWP.Мне нужно воспроизвести файл MP3, но не сразу, а если я нажму кнопку в моем приложении.Итак, я создал кнопку «загрузить MP3», которая запускает следующий метод: метод загрузки MP3
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 мс, чтобы работать вообще.Если я выберу длительную задержку (например, 3500 мс), песня начнет воспроизводиться и остановится через 3,5 секунды, очевидно.
Поскольку для моего проекта мне нужно рассчитать время начала песни точно в миллисекундахработать метод задержки не является идеальным для меня.У кого-нибудь есть идеи в чем проблема с методом SetSource()
?