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


            }
        }

questionAnswers(1)

yourAnswerToTheQuestion