我构建了一个应用程序,它使用监听文件夹FileSystemWatcher
,当创建一个新文件时,计时器会启动几秒钟,以确保整个文件都在文件夹中。然后我的主 ui 线程的启动事件运行将此文件添加到我的 ListView 中。
成功创建的新文件添加到我的ListView
但我的问题是添加第一个后,第二个添加了两次,下一个文件添加了 4 次等等......
我的听众班:
public class FileListener
{
private static string _fileToAdd;
public event EventHandler _newFileEventHandler;
private static System.Timers.Timer _timer;
public void startListener(string directoryPath)
{
FileSystemWatcher watcher = new FileSystemWatcher(directoryPath);
_timer = new System.Timers.Timer(5000);
watcher.Filter = "*.pcap";
watcher.Created += watcher_Created;
watcher.EnableRaisingEvents = true;
watcher.IncludeSubdirectories = true;
}
void watcher_Created(object sender, FileSystemEventArgs e)
{
_timer.Elapsed += new ElapsedEventHandler(myEvent);
_timer.Enabled = true;
_fileToAdd = e.FullPath;
}
private void myEvent(object sender, ElapsedEventArgs e)
{
_newFileEventHandler(_fileToAdd, EventArgs.Empty);
_timer.Stop();
}
}
我处理新文件的事件:
void listener_newFileEventHandler(object sender, EventArgs e)
{
string file = sender as string;
addFileToListFiew(file);
}
以及将文件添加到我的功能ListView
public void addFileToListFiew(string file)
{
this.Invoke((MethodInvoker)delegate
{
lvFiles.Items.Add(new ListViewItem(new string[]
{
file, "Waiting"
}));
});
}