でやや珍しい問題に遭遇しましたFile.WriteAllLines
。
私はこのようなコードを持っています
File.WriteAllLines(filename, data);
bool exists = File.Exists(filename);
問題は、ファイルの書き込みが失敗することがありますが、例外は発生せず、ファイルが存在しないのにコードが存在すると見なすことです。
- ファイルはネットワーク上の場所にあります。
- ファイル名は
Database.lock
.lock
拡張機能は OS にとって何か意味がありますか? Exists
true を返しますが、ファイルが存在しないだけです。例外は発生しません。Exists
別のプロセスから呼び出すと false が返されます。- 呼び出す
Process.Start(filename)
とエラーが発生します (コードの例外ではなく、ファイルが見つからないと OS が言っているだけです)。 - ローカル マシンは Windows 7 を実行しています。
- リモート マシンは Windows XP を実行しています。
ここで何が起こっているのかをデバッグするにはどうすればよいですか?
アップデート
David のアドバイスに従って、procmon.exe を使用してプロセスを監視しました。
これが結果です: http://i.imgur.com/IBz6Ujt.png
多くのことが繰り返し行われていることに気付くでしょうが、それは完全には理解できません。最後に、ファイルが正常に書き込まれたと報告されます。
解決済み
パトリックの提案のおかげで、考慮していなかったコード パスが原因で、コードの別のセグメントでファイルがすぐに削除されていたことがわかりました。みんなの時間を無駄にしてごめんなさい。予期せぬネットワークの問題ではなく、私が軽率だっただけに安心しています。