0

ストレージに書き込むために、この分離ストレージ機能があります。

public static void WriteIsolatedStorage(object ObjectToStore, StorageType Key)
{

    using (var storage = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())
    using (var storageFile = storage.CreateFile(Key.ToString()))
    {
        var xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(string));
        switch (Key)
        {
            case StorageType.UserCredentials:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFUserCredentials));
                break;
            case StorageType.BackgroundAgentUserCredentials:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFUserCredentials));
                break;
            case StorageType.UserProfile:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFUser));
                break;
            case StorageType.InboxItems:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(ObservableCollection<dmWFInboxItem>));
                break;
            case StorageType.InboxTileItems:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(ObservableCollection<dmInboxTileInfo>));
                break;
            case StorageType.DocumentHeaders:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(ObservableCollection<dmWFDocumentHeader>));
                break;
            case StorageType.SearchCache:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(List<List<dmWFDocumentHeader>>));
                break;
            case StorageType.FacebookProfile:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmFBUserProfile));
                break;
            case
                StorageType.BaseUrl:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFURLSetting));
                break;
            default:
                break;
        }
        xmlSerializer.Serialize(storageFile, ObjectToStore);
    }

}

そして、このストレージから取得する関数は次のとおりです。

public static dmWFURLSetting GetBaseUrl(StorageType Key)
{
    try

    {

        using (var storage = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (var storageFile = storage.OpenFile(Key.ToString(), System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite))
            {
                dmWFURLSetting result = new dmWFURLSetting();
                var xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFURLSetting));
                return (dmWFURLSetting)xmlSerializer.Deserialize(storageFile);
            }
        }

    }
    catch (Exception)
    {
        return null;
    }

}

わかりました。次に、これらのメソッドをフロントエンドから呼び出し、次に viemodel を呼び出す方法を次に示します。この電話アプリで mvvm を使用しています。フロントエンド呼び出し:

public string URL = (WorkflowBase.BaseURL != null ? WorkflowBase.BaseURL.ToString() : "");

backend のパブリック プロパティは次のとおりです。

public static string BaseURL = AccTech.WP8.Helpers.IsolatedStorage.GetBaseUrl(Helpers.IsolatedStorage.StorageType.BaseUrl).BaseUrl.ToString();

さて、ここで奇妙な部分が来ます。完全に閉じた後にエミュレーターを起動すると、分離されたストレージ (キャッシュ) が完全にクリーンであることを知っているので、この関数が呼び出されると、Null が返されます... フロントエンドでわかるようにnull値を取得した場合はインラインを呼び出して、それを「」にします。実行時に表示されるエラーは次のとおりです。PS: URL を静的にすると、アプリは動作します ここに画像の説明を入力

わかりました。プロセス全体をステップ実行しようとすると、次のエラーが表示されます。

ここに画像の説明を入力

私は物理的にこれを機能させることができません.Googleが提供するすべてを試しました...しかし何も起こりません.誰かが私に答えをくれれば喜んでいます.

さらにデータや情報が必要な場合はお知らせください

4

2 に答える 2

0

はい、私もこのタイプの例外を取得しています。しかし、この例外の背後にある領域は、アクセスしたいキーが含まれていない分離ストレージです。分離ストレージ オブジェクトのブレーク ポイント。

于 2015-06-12T11:22:16.857 に答える
0

WorkflowBase.BaseURL != null 、それが指していたこのワークフローベースクラスは、パブリック変数を取得したデータに決して変更しなかったため、エラーが発生しました! .

そうそう、今週のnoobミス!:P

于 2013-04-17T11:31:22.350 に答える