クライアントの情報をログに記録するために Silverlight アプリで使用IsloatedStorageしており、ログ ファイルをクリアする関数を追加しました。ただし、私が試した2つのアプローチには問題がありました。
アプローチ 1: 使用する
IsolatedStorageFile.DeleteFile("log.log");
結果: これは失敗し、"[IsolatedStorage_DeleteFile]" エラーが返されます (その他の情報はありません)。この関数は、たとえば、テスト ファイルでは問題なく動作しますDeleteFile("test.txt")が、ログの削除は拒否します。おそらくログが使用されていると思い、それを閉じようとしました
IsolatedStorageFileStream.close()
しかし、これは別のエラー "[IsolatedStorage_StoreNotOpen]" を返します。前のコード行でメッセージが正常にログに記録されているため、開いていることがわかります。
アプローチ 2: Truncate file モードを使用してログ ファイルを再度開きます。
_storageFileStream = new IsolatedStorageFileStream(logfilename, FileMode.Truncate, FileAccess.Write, FileShare.ReadWrite, _storageFile);
MSDN によると、Truncate は、「オペレーティング システムが既存のファイルを開く必要があることを指定します。ファイルを開くと、サイズが 0 バイトになるようにファイルを切り詰める必要があります。」ただし、ログ ファイルが開かれ、空白で埋められます。ファイルサイズは同じままで、次のログ メッセージがすべてのスペースの末尾に追加されます。