是否可以每3秒更改一次AudioTrack标题

时间:2014-02-12 05:25:56

标签: c# windows-phone-8

我试图每隔3秒更改一次AudioTrack标题,但似乎我无法更改它或使用以下内容无法实现:

void timer_Tick(object sender, EventArgs e)
{
  BackgroundAudioPlayer player = BackgroundAudioPlayer.Instance;
  switch (player.PlayerState)
  {
    case PlayState.Playing:
    if (recitation != null && recitation.Count > 0)
    {
        if (++ayaRecitationCounter == recitation.Count)
        {
           ayaRecitationCounter = 0;
           recitationTimer.Stop();
        }
        else
        {
           player.Track.Title = ayaRecitationCounter.ToString(); //Exception occurs here   recitationTimer.Interval=TimeSpan.FromSeconds(recitation[ayaRecitationCounter].AyaDuration);
           lsbReadingChapter.SelectedIndex = ayaRecitationCounter;
           lsbReadingChapter.ScrollIntoView(lsbReadingChapter.SelectedIndex);
         }
       }
       break;
       }
}

该应用程序正在粉碎并向我提供以下消息:

Operation is not valid due to the current state of the object.
   at Microsoft.Phone.BackgroundAudio.AudioTrack.set_Title(String value)

如何更改标题?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您想在创建AudioTrack后进行编辑,则必须将BeginEdit用作MSDN says

  

使用其中一个AudioTrack构造函数创建轨道后,必须使用BeginEdit()和EndEdit()方法更新对象。

正如我已经检查过的那样 - 我可以通过这段代码改变标题(例如):

AudioTrack track = BackgroundAudioPlayer.Instance.Track;
track.BeginEdit();
track.Title = "New Title";
track.EndEdit();

(此处需要通过引用访问)

当然,在你的代码中添加一些try-catch块是合适的 Pease也要注意,只有当您的应用程序位于前台时,您的Timer才会起作用。