私は現在、私が直面している問題を理解しようとしています。私は次のコードを持っています:File.Createを使用していてもファイルに追加することはできますか?
using (FileStream sw = File.Create(mypath))
{
sw.Write(source, 0, bytesRead);
sw.Flush();
}
これは、(同時に)複数の時間を実行できるWebサービスで使用されます。
私が直面してる問題は、私は急に(したがって、元のコンテンツがファイル内に2倍された)重複コンテンツを持っていた一つのファイルを持っていたということです。
私は問題が再現できないので、File.Createを使用してストリームを作成したにもかかわらず、基本となるメソッドへの別の呼び出しでコンテンツが生成される可能性がある(マルチスレッドで)可能性があります。上書きされたコンテンツの代わりに追加されたコンテンツ?
編集: それは頼まれたとおり、私は複数の呼び出しが可能になり得るかについてもう少し説明しようとしています。
サードパーティ製のツールは、重要なファイル(.xmlファイル)を作成し、サーバーにそれらを転送するために自分のWebサービスを呼び出します。何らかの理由で転送が失敗した場合、サードパーティのツールは転送を再試行します。私は複数の転送試行をログ内で数分以内に見ているので、私は最初の呼び出しには時間がかかり、2番目の呼び出しが来るということです。最初のものがまだ続いているとき。したがって、彼らはお互いに重複しています(悲しいことに、私は利用可能なログを持っているかどうかの証拠は見つけられません。したがって、最悪の場合のシナリオ、つまり重複して、質問)。 Write
-methodへお電話の前に
_ _「複数の時間に実行することができます」 - とさえ同じ 'mypath'ですか?それは単にバグでしょう。 –
yeppと同じmypath。私は予期せぬことがC#/ asp.net私は直面しているかどうか、または作成プログラムがすでにエラー(したがって、Webサービスを呼び出し、ソースを送信したプログラム)を修正しようとしています。ログから得たものから、ストリームがすでに閉じられているかどうかは、2番目または3番目が開かれたかどうかを実際には知ることができません。 – Thomas
いずれにしても、これを防ぐ必要があります。それを修正しないでください。 –