ここで私の質問を参照しているだけです(まだ解決されていません):
デバッグモードで実行している場合、例外は発生していません.exeから実行している場合にのみ発生します。
デバッグモードではなくexeを実行しているときに例外が発生する理由を誰かが説明できますか。
exe を初めて実行すると、正常に動作し、必要な xml 出力が得られます。しかし、ウォッチャーの2番目の検索について。この例外が発生します:プロセスはファイルにアクセスできません。
ここで私の質問を参照しているだけです(まだ解決されていません):
デバッグモードで実行している場合、例外は発生していません.exeから実行している場合にのみ発生します。
デバッグモードではなくexeを実行しているときに例外が発生する理由を誰かが説明できますか。
exe を初めて実行すると、正常に動作し、必要な xml 出力が得られます。しかし、ウォッチャーの2番目の検索について。この例外が発生します:プロセスはファイルにアクセスできません。
私はその完全なコードセットを調べました....あなたが抱えている問題は、イベントとタイミングに関係しています. ファイルを保存しているプロセスがファイルを解放する前に、イベントが FileWatcher オブジェクトから発生しています。Convert メソッドの一番上に Thread.Sleep を配置してみてください...長すぎる必要はありません。おそらく 1 秒程度から始めてください...何が起こるかを見てください。
private static void convert(object source, FileSystemEventArgs f)
{
string FileName;
FileName = f.FullPath;
string FilePath;
FilePath = f.Name;
var watcher = source as FileSystemWatcher;
string destinationFile = @"D:/GS/" + FilePath;
Thread.Sleep(1000);
//...
ロックが間違っていると思われるため、複数のスレッドがファイルを取得しようとします
次のようにしてみてください。
if (Monitor.TryEnter(lockObject))
{
try{
//Your actual code
}
}
else
return;
EXEプロセスは継続的に実行されています。あなたのexeのプロセスはおそらく停止するはずです。その後、「プロセスはファイルにアクセスできません」というエラーは発生しません。コードに適切なエラー処理手法を使用します。コードは XML ファイルと継続的に通信します。なので、2回目アクセスしようとすると、間違っていなければアクセスエラーがでます。