C# 多次调用FileSystemWatcher事件
我使用filesystemwatcher创建了一个控制台应用程序来监视特定文件夹。 当我在任何文件中进行任何更改或创建、重命名或删除时,它将触发一个事件。 但当我更改文件时,会触发2个事件。我只需要为相应的操作触发一个事件 下面是我更改文件时触发2个事件的代码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
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只是将操作系统功能包装到一个更好的界面中