我想通过我的事件将我的List<string>
作为参数传递。
public event EventHandler _newFileEventHandler;
List<string> _filesList = new List<string>();
public void startListener(string directoryPath)
{
FileSystemWatcher watcher = new FileSystemWatcher(directoryPath);
_filesList = new List<string>();
_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;
_filesList.Add(e.FullPath);
_fileToAdd = e.FullPath;
}
private void myEvent(object sender, ElapsedEventArgs e)
{
_newFileEventHandler(_filesList, EventArgs.Empty);;
}
我希望从我的主表单中获取这个列表:
void listener_newFileEventHandler(object sender, EventArgs e)
{
}
OnNewFileAdded
函数进行了小改动。如果你有一个多线程应用程序,并且最后一个调用者在空值检查和委托调用之间取消订阅事件,那么你将会得到一个NullRefrenceException
异常。通过先将委托复制到一个临时变量中,可以防止这种情况发生。 - Scott Chamberlain