Como posso salvar as configurações no IsolatedStorage enquanto a instância do BackgroundAudioPlayer está ativa?
Eu tenho dois projetos na minha solução. Digamos que o Projeto A e o Projeto B.
Projeto A
É o projeto principal e tem configurações. Eu tenho uma caixa de seleção para dar ao usuário uma opção para "Repetir" faixa (s). Este projeto também pode acessar as instâncias públicas do PROJETO B.
Projeto B
É o BackgroundAudioAgent e tem suas próprias configurações. Este projeto não tem acesso às configurações do PROJETO A. Portanto, no PROJETO A, eu preciso acessar as configurações do PROJETO B e salvá-lo lá. Assim, quando a "Repetição" estiver habilitada, o agente reinicia a reprodução.
PROBLEMA
Não consigo salvar as configurações (em outras palavras, as configurações são salvas, mas não são afetadas) quando a instância do BackgroundAudioPlayer está em execução. Eu sempre tenho que fechar a instância, e quando faço isso, as configurações podem ser alteradas.
QUESTÃO
Qual é a maneira mais eficiente de fazer o que estou tentando fazer?
Como posso salvar as configurações no IsolatedStorage sem fechar a instância do BackgroundAudioPlayer? (como eu não quero interromper nenhuma faixa sendo tocada).
CÓDIGO: O que tenho que fazer para salvar as configurações.
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;
}
CÓDIGO: O que eu simplesmente quero fazer.
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
}
}