IsolatedStorage

Eine der tollen Neuigkeiten von XNA 4.0 ist IsolatedStorage. Dies funktioniert wunderbar unter Windows, sowie auf der XBox und dem Windows Phone und fragt nicht nach einem Speichergerät (was allerdings zu Lasten der Portabilität geht; auf der XBox sind die Daten im IsolatedStorage Gerätegebunden und nicht mit dem Spieler verknüpft).

Die Verwendung ist erfreulich einfach:

IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();

 

Dies kompiliert auf allen Plattformen und verursacht scheinbar keinerlei Probleme. Scheinbar! Wenn man diesen Code unter Windows startet, dann gibt es eine IsolatedStorageException: „Unable to determine application identity of the caller.

Das ist nicht weiter schlimm und auch relativ einfach zu lösen, wenn man den Hintergrund kennt. Unter Windows hat man die Qual der Wahl: Pro Benutzer oder Pro Maschine und mit der Identität der aufrufenden Assembly, der aktuellen AppDomain oder der aktuellen WebSite. Auf dem Windows Phone und der XBox gibt es diese Unterscheidung nicht.

Die Lösung ist relativ einfach mit bedingter Kompilierung zu erreichen und das sogar Plattformunabhängig:

IsolatedStorageFile GetUserStoreAsAppropriateForCurrentPlatform()
    {
#if WINDOWS
        return IsolatedStorageFile.GetUserStoreForDomain();
#else
        return IsolatedStorageFile.GetUserStoreForApplication();
#endif
    }
Advertisements

Veröffentlicht am 17.12.2010, in Grundlagen, XNA. Setze ein Lesezeichen auf den Permalink. Hinterlasse einen Kommentar.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: