-1

ファイルが存在する間、次のプロセスは待機したままになります。おそらくエラーを起こしましたが、どこにあるのかわかりません。

System.IO.WaitForChangedResult result;
seeTransFile.WaitForChanged(System.IO.WatcherChangeTypes.Created);
string seeDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
System.IO.FileSystemWatcher watcher = new FileSystemWatcher(SynDir, fileName + @".md5");
result = watcher.WaitForChanged(System.IO.WatcherChangeTypes.Created);

手伝って頂けますか?

4

2 に答える 2

1

FileSystemWatcher は、ファイルが作成/変更されたときにのみトリガーされます。既存のファイルは無視されます。

最初に FileSystemWatcher を起動し、次に Directory.GetFiles を使用して既存のファイルを取得します。

FileSystemWatcher によって検出されたファイルの内容を読み取る必要がある場合は、次のコードを使用して、ファイルの所有者がすべてのロックを解除したことを確認することをお勧めします。

try 
{
    // Attempts to open then close the file in RW mode, denying other users to place any locks.
    FileStream fs = File.Open(filepath, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
    fs.Close();
    fileClosed = true; // success
}
catch (IOException) {}

ファイルにロックが存在する場合は、所有者がロックを解除するのを待つか、ファイルをキューに入れて後で再試行してください。

于 2013-08-14T09:55:01.457 に答える
0

すでに FileSystemWatcher コンポーネントを追加しているため、以下のように監視するように構成します。他のコード行を削除

System.IO.WaitForChangedResult result;
seeTransFile.Path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
seeTransFile.Filter = fileName + @".md5";
result = seeTransFile.WaitForChanged(System.IO.WatcherChangeTypes.Created);
于 2013-08-14T09:58:37.680 に答える