1

私は約 1000 件の同様の投稿を読み、一般的なアドバイスに従いましたが、まだ問題が発生しています。これが私のシナリオです:

ユーザーが保存すると、すべてのデータを XML にシリアル化し、CreateFile を使用して保存する Windows Phone 8 アプリに取り組んでいます。私が直面している問題は、ユーザーが保存を数回続けて押すと、IsolatedStorageException:Operation Not Permitted がスローされることです (ファイルにアクセスしようとすると、シリアル化に十分な時間がかかり、ファイルがまだ使用されていると推測しています) 2回目)。保存が 2 回目にタップされたときに、前のアクションを中止し、分離ストレージ ファイルを解放して、新しい保存を開始する方法はありますか? または、より良い解決策はありますか?

私の Save メソッドのコードは次のとおりです (例外は isoStore.CreateFile(filename) 行で発生します)。

        using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
        {

            using (IsolatedStorageFileStream stream = isoStore.CreateFile(filename))
            {
                XmlSerializer xml = new XmlSerializer(GetType());
                xml.Serialize(stream, this);
            }
        }

私は何週間もここで立ち往生しているので、どんな助けも素晴らしいでしょう.

ありがとう、ベン:

4

2 に答える 2

2

このようなもので行くことができます。

private async Task Save(string fileName)
{
    Button.IsEnabled = false;

    await Task.Run(() =>
        {
            using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
            {

                using (IsolatedStorageFileStream stream = isoStore.CreateFile(filename))
                {
                    XmlSerializer xml = new XmlSerializer(GetType());
                    xml.Serialize(stream, this);
                }
            }
        });

    Button.IsEnabled = true;
}
于 2013-05-16T06:26:46.217 に答える
1

クリックしたときに「保存」ボタンを無効にし、シリアル化が完了したら再度有効にしないのはなぜですか?

于 2013-05-16T01:30:46.950 に答える