¿Cómo puedo guardar la configuración en IsolatedStorage mientras la instancia de BackgroundAudioPlayer está activa?

Tengo dos proyectos en mi solución. Digamos Proyecto A y Proyecto B.

Proyecto a

Es el proyecto principal y tiene configuraciones. Tengo una casilla de verificación para dar al usuario la opción de "Repetir" las pistas. Este proyecto también puede acceder a las instancias públicas del PROYECTO B.

Proyecto b

Es el BackgroundAudioAgent y tiene su propia configuración. Este proyecto no tiene acceso a la configuración del PROYECTO A. Por lo tanto, en el PROYECTO A, necesito acceder a la configuración del PROYECTO B y guardarlo allí. De modo que, cuando se habilita "Repetir", el agente reinicia la reproducción.

PROBLEMA

No puedo guardar la configuración (en otras palabras, la configuración se guarda, pero no tiene ningún efecto) cuando se ejecuta la instancia de BackgroundAudioPlayer. Siempre tengo que cerrar la instancia, y cuando hago eso, la configuración se puede cambiar.

PREGUNTA

¿Cuál es la manera más eficiente de hacer lo que estoy tratando de hacer?

¿Cómo puedo guardar la configuración en IsolatedStorage sin cerrar la instancia de BackgroundAudioPlayer? (ya que no quiero interrumpir ninguna pista que se esté reproduciendo).

CÓDIGO: Lo que tengo que hacer para guardar la configuración.

    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: Lo que simplemente quiero hacer.

    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


            }
        }

Respuestas a la pregunta(1)

Su respuesta a la pregunta