C# 将文件复制到监视目录时获取事件
我正在创建一个服务,它将监视指定目录中的任何更改(例如,文件创建、重命名等)。我扩展了FileSystemWatcher类,我的主要监视方法是:C# 将文件复制到监视目录时获取事件,c#,.net-core,filesystemwatcher,C#,.net Core,Filesystemwatcher,我正在创建一个服务,它将监视指定目录中的任何更改(例如,文件创建、重命名等)。我扩展了FileSystemWatcher类,我的主要监视方法是: public void Watch() { Path = "C:\\Users\\Golobitch\\Documents\\ProSyncTest\\"; NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileNam
public void Watch() {
Path = "C:\\Users\\Golobitch\\Documents\\ProSyncTest\\";
NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
Filter = "*";
Changed += OnChanged;
Created += OnChanged;
Deleted += OnChanged;
Renamed += OnRenamed;
EnableRaisingEvents = true;
}
private void OnChanged(object source, FileSystemEventArgs e) {
Console.WriteLine($"File: {e.Name} {e.ChangeType}");
}
private void OnRenamed(object source, RenamedEventArgs e) {
Console.WriteLine($"File: {e.OldFullPath} renamed to {e.FullPath}");
}
好的,很好,这样就可以了。每当有新文件或类似文件时,就会调用适当的方法。但是,如果我将大文件从USB复制到这个监视的目录,会怎么样?然后我收到这些通知:
File: Ubuntu 18 LTS dev.vdi Created
File: Ubuntu 18 LTS dev.vdi Changed
File: Ubuntu 18 LTS dev.vdi Changed
所以我实际上不知道文件什么时候被完全转移到我的目录。有什么解决方案,我可以参加的活动吗
编辑:我是否应该检查文件是否被其他进程锁定