Jak mogę zapisać ustawienia w IsolatedStorage, gdy instancja BackgroundAudioPlayer jest aktywna?

Mam dwa projekty w moim rozwiązaniu. Powiedzmy, Projekt A i Projekt B.

Projekt A

To główny projekt i ustawienia. Mam pole wyboru, aby dać użytkownikowi opcję „Powtórz” ścieżki. Ten projekt może również uzyskać dostęp do publicznych instancji PROJECT B.

Projekt B

Jest to BackgroundAudioAgent i ma własne ustawienia. Ten projekt nie ma dostępu do ustawień PROJECT A. Dlatego w PROJECT A muszę uzyskać dostęp do ustawień PROJECT B i zapisać go tam. Aby włączyć opcję „Powtórz”, agent ponownie uruchamia grę.

PROBLEM

Nie mogę zapisać ustawień (innymi słowy, ustawienia są zapisywane, ale nie mają żadnego wpływu), gdy instancja BackgroundAudioPlayer jest uruchomiona. Zawsze muszę zamknąć instancję, a kiedy to zrobię, ustawienia można zmienić.

PYTANIE

Jaki jest najskuteczniejszy sposób robienia tego, co próbuję zrobić?

Jak mogę zapisać ustawienia w IsolatedStorage bez zamykania instancji BackgroundAudioPlayer? (ponieważ nie chcę przerywać żadnego odtwarzanego utworu).

KOD: Co muszę zrobić, aby zapisać ustawienia.

    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;
    }

KOD: Co chcę po prostu zrobić.

    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