Как сохранить настройки в IsolatedStorage, когда активен экземпляр BackgroundAudioPlayer?
У меня есть два проекта в моем решении. Скажем, проект А и проект Б.
Проект А
Это основной проект и имеет настройки. У меня есть флажок, чтобы дать пользователю возможность «Повторить» трек (ы). Этот проект также может получить доступ к публичным экземплярам ПРОЕКТА B.
Проект Б
Это BackgroundAudioAgent с собственными настройками. Этот проект не имеет доступа к настройкам ПРОЕКТА А. Поэтому в ПРОЕКТЕ A мне нужно получить доступ к настройкам ПРОЕКТА B и сохранить его там. Так что, когда «Повтор» включен, агент возобновляет воспроизведение.
ПРОБЛЕМА
Я не могу сохранить настройки (другими словами, настройки сохраняются, но это никак не влияет), когда работает экземпляр BackgroundAudioPlayer. Я всегда должен закрывать экземпляр, и когда я это делаю, настройки могут быть изменены.
ВОПРОС
Какой самый эффективный способ сделать то, что я пытаюсь сделать?
Как сохранить настройки в IsolatedStorage, не закрывая экземпляр BackgroundAudioPlayer? (поскольку я не хочу прерывать ни одну из воспроизводимых дорожек).
КОД: Что мне нужно сделать, чтобы сохранить настройки.
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;
}
КОД: Что я просто хочу сделать.
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
}
}