C# 多次调用FileSystemWatcher事件

C# 多次调用FileSystemWatcher事件,c#,windows,triggers,console-application,filesystemwatcher,C#,Windows,Triggers,Console Application,Filesystemwatcher,我使用filesystemwatcher创建了一个控制台应用程序来监视特定文件夹。 当我在任何文件中进行任何更改或创建、重命名或删除时,它将触发一个事件。 但当我更改文件时,会触发2个事件。我只需要为相应的操作触发一个事件 下面是我更改文件时触发2个事件的代码 public static void FileSystemWatcher_Changed(object sender, FileSystemEventArgs e) { FileSystemWatc

我使用filesystemwatcher创建了一个控制台应用程序来监视特定文件夹。 当我在任何文件中进行任何更改或创建、重命名或删除时,它将触发一个事件。 但当我更改文件时,会触发2个事件。我只需要为相应的操作触发一个事件

下面是我更改文件时触发2个事件的代码

public static void FileSystemWatcher_Changed(object sender, FileSystemEventArgs e)
        {
            FileSystemWatcher watcher = new FileSystemWatcher();
            string time = DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss");

                string myFilePath = e.FullPath;
                string ext = Path.GetExtension(myFilePath);
                if (ext == ".tmp" || ext == ".TMP" || ext == "")
                {

                }
                else
                {
                    string date = DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss");
                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine("A new file has been changed - " + e.Name + " " + "on" + " " + date + " File Changed", Console.ForegroundColor);
                    //  SendAttachmentMail("A File Has Been Changed - " + e.Name + "", date, "File Changed");
                    //File_Date = date;
                    //watcher.Dispose();



            }
        } 
这种行为是不公平的。还记录的是,您不能保证所有活动都会交付。应用程序必须保护自己不受任何情况的影响

常见文件系统操作可能引发多个事件。对于 例如,当文件从一个目录移动到另一个目录时,几个 可能引发OnChanged和一些OnCreated和OnDeleted事件。 移动文件是一项复杂的操作,包括多个简单的步骤 操作,因此引发多个事件。同样,一些 应用程序(例如,防病毒软件)可能会导致额外的 FileSystemWatcher检测到的文件系统事件

还要注意的是,上述是Win32行为,FSW只是将操作系统功能包装到一个更好的界面中