当文件存在时,以下过程仍在等待。 我可能犯了一个错误,但我不知道在哪里。
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);
你能帮助我吗?
答案 0 :(得分: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) {}
如果文件上存在锁定,请等待其所有者释放该锁定,或者将该文件放在队列中并稍后重试。
答案 1 :(得分:0)
因为您已经添加了FileSystemWatcher组件,所以将其配置为如下所示。删除其他代码行
System.IO.WaitForChangedResult result;
seeTransFile.Path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
seeTransFile.Filter = fileName + @".md5";
result = seeTransFile.WaitForChanged(System.IO.WatcherChangeTypes.Created);