3

Silverlight 4.0 でファイルをローカル ディスクに保存するためのロジックを記述しようとしています。SaveFileDialogそのためにクラスを使用しています。それは正常に動作します。しかし、表示用に既に開いているファイルに保存しようとすると、未処理の例外が発生します。また、アプリケーションがすぐにクラッシュします。

Silverlight 3 にも同様の問題がありました。application_unhandledexceptionSaveFileStreamイベントで、例外内のテキストを検索して例外を飲み込むことで、この問題を解決しました。これは Silverlight 4 で処理されると思っていましたが、さらに悪化しました。回避策でさえ、現在は機能していません。

SaveFileDialogロジックの周りに try catch を配置し、 IOException(別のプロセスがファイルを使用している) はここで安全にキャッチされますが、すぐに上記の例外がトリガーされます。

どんな助けでも大歓迎です。

更新: これは Excel ファイルで発生し、txt ファイルでは発生しません。これは、すべての MS Office ファイルで発生すると思います。

公式フォーラムでの問題に関する投稿

4

1 に答える 1

1

ファイルの保存方法を教えてください。ストリームは適切にフラッシュ、クローズ、破棄されていますか?

例として次のようにします(注:これを行うには多くの代替手段があります):

using (Stream stream = new IsolatedStorageFileStream("somefilename.ext", FileMode.Create, FileAccess.Write, IsolatedStorageFile.GetUserStoreForApplication()))
{
    // Use the stream normally in a TextWriter
    using (TextWriter writer = new StreamWriter(stream, Encoding.UTF8))
    {
        writer.Flush();
        writer.Close();
    }

    stream.Close();
}

それが助けになることを願っています:-)

于 2011-09-23T21:24:24.583 に答える