1

Silverlight 4.0からファイルを保存する教科書の例のように見える小さなコードがありますが、機能していないようです。

次のスニペットは、ボタンクリックハンドラーからのものです。

var saveDialog = new SaveFileDialog() { Filter = "All Files(*.*)|*.*" };

if (saveDialog.ShowDialog() == true)
{
    using (var stream = saveDialog.OpenFile())
    using (var writer = new StreamWriter(stream))
    {
        writer.WriteLine("Hello, World!");
        writer.Flush();
        writer.Close();
    }
}

私はファイルを多くの異なる場所に保存しようとしましたが、すべて同じ動作です。

  • SaveFileDialog正常に動作しているようです。
  • SaveFileStream(デバッガーから)正常に動作しているように見えます。
  • を呼び出した後、位置15writer.Flush()BaseStream進みます。
  • 例外はスローされません。
  • ブロックの実行後、Windowsエクスプローラーを使用してファイルを見つけることができません。

コードは単純すぎて通常の状況では失敗しないように思えます。だからそれは私の質問につながります:私の状況で何が間違っているのですか?保存が正常に完了したように見えるのに、ファイルが見つからないのはなぜですか?セキュリティ設定?コード自体?私は途方に暮れています。

アップデート

私はさらにいくつかのことを試しましたが、それでも運がありません。SaveFileDialog同じ症状でブラウザー外でアプリケーションを実行し、をクラス変数に昇格させました。アプリケーションはエラーがないように動作しますが、保存場所(Vistaではマイドキュメントフォルダー)にファイルが表示されません。

プロットが厚くなる

デバッガーをステップスルーしていて、さらに奇妙な動作を見つけました。の呼び出し後saveDialog.OpenFile()、ファイルはターゲットの場所に表示されます。各ステートメントの後に残りますが、への呼び出し後に削除されwriter.Close()ます。ストリームが閉じたときにファイルが自動的に削除されるのはなぜですか?

よろしくお願いします!

4

0 に答える 0