当我的移动应用程序暂停时,我想每两秒播放一次声音。
在OnSuspending
中,我致电BackgroundMediaPlayer.Current
以启动后台任务。
AudioTask:
public sealed class AudioTask : IBackgroundTask
{
private ThreadPoolTimer timer;
private BackgroundTaskDeferral deferral;
private bool canceled;
public void Run(IBackgroundTaskInstance taskInstance)
{
Debug.WriteLine("AudioTask starting");
deferral = taskInstance.GetDeferral();
StorageFolder folder = await Package.Current.InstalledLocation.GetFolderAsync("Assets");
StorageFile file = await folder.GetFileAsync("sound.wav");
var stream = await file.OpenAsync(FileAccessMode.Read);
BackgroundMediaPlayer.Current.AutoPlay = false;
BackgroundMediaPlayer.Current.SetStreamSource(stream);
timer = ThreadPoolTimer.CreatePeriodicTimer(new TimerElapsedHandler(PeriodicTimerCallback), TimeSpan.FromSeconds(2));
taskInstance.Canceled += new BackgroundTaskCanceledEventHandler(OnCanceled);
}
private void OnCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
{
Debug.WriteLine("AudioTask canceled");
canceled = true;
}
private void PeriodicTimerCallback(ThreadPoolTimer timer)
{
Debug.WriteLine("AudioTask timer callback");
if (!canceled)
{
BackgroundMediaPlayer.Current.Play();
}
else
{
timer.Cancel();
deferral.Complete();
}
}
}
这在调试时工作正常,但是当我在没有调试器的情况下使用应用程序时,没有播放声音。