C# 为什么FileSystemWatcher在创建文件时引发更改事件?

C# 为什么FileSystemWatcher在创建文件时引发更改事件?,c#,.net,c#-4.0,filesystemwatcher,C#,.net,C# 4.0,Filesystemwatcher,这是我的代码: _instrumentsFolderWatcher.Changed += _instrumentsFolderWatcher_Changed; _instrumentsFolderWatcher.Created += _instrumentsFolderWatcher_Created; _instrumentsFolderWatcher.Deleted += _instrumentsFolderWatcher_Deleted; 其中\u instrumentsFolder

这是我的代码:

 _instrumentsFolderWatcher.Changed += _instrumentsFolderWatcher_Changed;
 _instrumentsFolderWatcher.Created += _instrumentsFolderWatcher_Created;
 _instrumentsFolderWatcher.Deleted += _instrumentsFolderWatcher_Deleted;
其中
\u instrumentsFolderWatcher
文件系统观察程序的实例。问题是,当我将文件粘贴到被监视的文件夹中时,创建和更改的事件都会被触发。为什么会触发已更改的事件?此外,changed事件将使用changed的
ChangeType
触发。我如何回避这个问题

Edit:
为什么在我更改文件名时不触发Changed事件?

常见文件系统操作可能引发多个事件。例如,当文件从一个目录移动到另一个目录时,可能会引发几个OnChanged事件以及一些OnCreated和OnDeleted事件。移动文件是由多个简单操作组成的复杂操作,因此会引发多个事件。同样,某些应用程序(例如,防病毒软件)可能会导致FileSystemWatcher检测到其他文件系统事件


尝试使用
重命名
事件来确定文件何时重命名。

当您“粘贴”文件时,新文件将同时被创建和更改。你能解释一下这是如何给你带来麻烦的吗?希望能有帮助:@William:如果这件事很明显,那么下一个问题是,为什么更改的事件会被触发两次?@Jack:我不想表明任何事情是明显的,只有当我更好地理解为什么多个事件会给你带来麻烦时,我才有可能提出缓解问题的方法。更改文件名应导致
重命名事件。您可以在以下站点找到文档:。特别是备注中标题为“事件和缓冲区大小”的部分