0

重複の可能性:
.NET でファイルのロックが解除されるまで待ちます

ファイルが別のプロセスによってロック解除されるまで (ファイルのコピー中など)、プログラムが再び使用できるようになるまで待たなければならない場合がよくあります。標準的な解決策は、Thread.Sleep() を使用してループを繰り返すのを待つことです。私はそのようなことをいいとは思いません。.NET の FileSystemWatcher で実行できることを読みました (C# を使用しています)。誰かがそれを説明できますか? 返信ありがとうございます。

4

2 に答える 2

2

名前が示すようにFileSystemWatcherを使用すると、ファイルまたはフォルダーを操作したときに発生するイベントを監視できます。changecreatedeleterename

FileSystemWatcherファイルがロックされているかどうかを確認するために使用することはできません..

于 2013-01-25T07:11:28.457 に答える
0
FileSystemWatcher _watcher;
int _watcherEventFiredCounter;

_watcher = new FileSystemWatcher {
    Path = @"C:\temp",
    NotifyFilter = NotifyFilters.LastWrite,
    Filter = "*.zip",
    EnableRaisingEvents = true
};

_watcher.Changed += OnChanged;


private void OnChanged(object sender, FileSystemEventArgs e)
{
    _watcherEventFiredCounter++;
    // The event is fired two times: on start copying and on finish copying
    if (_watcherEventFiredCounter == 2) {
        Console.WriteLine("Copying is finished now!");
        _watcherEventCounter = 0;
    }
}

ここで問題は、どのようにして呼び出し元のスレッドに戻ることができるかということです。

于 2013-01-25T15:32:17.520 に答える