我的解决方案中有两个项目。假设项目 A 和项目 B。
项目A
它是主要项目并具有设置。我有一个复选框,可以让用户选择“重复”曲目。该项目还可以访问 PROJECT B 的公共实例。
项目 B
它是 BackgroundAudioAgent 并且有它自己的设置。此项目无权访问 PROJECT A 设置。因此,在 PROJECT A 中,我需要访问 PROJECT B 的设置并将其保存在那里。这样,当启用“重复”时,代理会重新开始播放。
问题
当 BackgroundAudioPlayer 的实例正在运行时,我无法保存设置(换句话说,设置已保存,但不会产生任何影响)。我总是必须关闭实例,当我这样做时,可以更改设置。
问题
做我想做的事情的最有效方法是什么?
如何在不关闭 BackgroundAudioPlayer 实例的情况下将设置保存在 IsolatedStorage 中?(因为我不想打断正在播放的任何曲目)。
代码:我必须做些什么来保存设置。
public bool SettingAudioRepeat
{
get
{
return GetValueOrDefault<bool>(SettingAudioRepeatKeyName, SettingAudioRepeatDefault);
}
set
{
if (AddOrUpdateValue(SettingAudioRepeatKeyName, value))
{
bool resumePlay = false;
try
{
if (BackgroundAudioPlayer.Instance.PlayerState != PlayState.Shutdown)
{
BackgroundAudioPlayer.Instance.Close();
resumePlay = true;
}
}
catch { }
TaskEx.Delay(300);
IQR_Settings iqrSet = new IQR_Settings();
iqrSet.SettingAudioRepeat = value;
iqrSet.Save(); //Saving the settings for Project B
Save(); //Saving the settings for Project A
try
{
if (resumePlay)
BackgroundAudioPlayer.Instance.Play(); //It starts all from scracth
}
catch { }
}
}
public T GetValueOrDefault<T>(string Key, T defaultValue)
{
T value;
// If the key exists, retrieve the value.
if (settings.Contains(Key))
{
value = (T)settings[Key];
}
// Otherwise, use the default value.
else
{
value = defaultValue;
}
return value;
}
CODE:我只是想做的事。
public bool SettingAudioRepeat
{
get
{
return GetValueOrDefault<bool>(SettingAudioRepeatKeyName, SettingAudioRepeatDefault);
}
set
{
if (AddOrUpdateValue(SettingAudioRepeatKeyName, value))
{
IQR_Settings iqrSet = new IQR_Settings();
iqrSet.SettingAudioRepeat = value;
iqrSet.Save(); //Saving the settings for Project B
Save(); //Saving the settings for Project A
}
}