2014-02-12 16 views
1

我试图改变每3秒AudioTrack冠军,但我似乎不能改变它,或者使用下面这可能是不可能的:是否有可能改变AudioTrack标题每3秒

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) 

如何更改标题?

谢谢!

+0

Weere是否存在该Timer?主界面? – Romasz

+0

是的,但我开始时,开始玩。初始化发生在构造函数中。 – ARH

+0

在BackgroundAudioPlayer的构造函数中? – Romasz

回答

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只有当你的应用程序处于前台时才能工作。

+0

谢谢。因为我有计时器,所以我从前台改变这一点。 – ARH

+0

@ARH然后给我只有一个标志,如果这与定时器的工作。 – Romasz

+0

非常感谢!有效。 – ARH

相关问题