5

でやや珍しい問題に遭遇しましたFile.WriteAllLines

私はこのようなコードを持っています

File.WriteAllLines(filename, data);
bool exists = File.Exists(filename);

問題は、ファイルの書き込みが失敗することがありますが、例外は発生せず、ファイルが存在しないのにコードが存在すると見なすことです。

  • ファイルはネットワーク上の場所にあります。
  • ファイル名はDatabase.lock. lock拡張機能は OS にとって何か意味がありますか?
  • Existstrue を返しますが、ファイルが存在しないだけです。例外は発生しません。
  • Exists別のプロセスから呼び出すと false が返されます。
  • 呼び出すProcess.Start(filename)とエラーが発生します (コードの例外ではなく、ファイルが見つからないと OS が言っているだけです)。
  • ローカル マシンは Windows 7 を実行しています。
  • リモート マシンは Windows XP を実行しています。

ここで何が起こっているのかをデバッグするにはどうすればよいですか?

アップデート

David のアドバイスに従って、procmon.exe を使用してプロセスを監視しました。

これが結果です: http://i.imgur.com/IBz6Ujt.png

多くのことが繰り返し行われていることに気付くでしょうが、それは完全には理解できません。最後に、ファイルが正常に書き込まれたと報告されます。

解決済み

パトリックの提案のおかげで、考慮していなかったコード パスが原因で、コードの別のセグメントでファイルがすぐに削除されていたことがわかりました。みんなの時間を無駄にしてごめんなさい。予期せぬネットワークの問題ではなく、私が軽率だっただけに安心しています。

4

1 に答える 1