我试图每隔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)
如何更改标题?
谢谢!
答案 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
才会起作用。