我想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);;
}
Run Code Online (Sandbox Code Playgroud)
从我的主要表格,我想得到这个列表:
void listener_newFileEventHandler(object sender, EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)
Saw*_*wan 58
创建一个新的EventArgs类,例如:
public class ListEventArgs : EventArgs
{
public List<string> Data { get; set; }
public ListEventArgs(List<string> data)
{
Data = data;
}
}
Run Code Online (Sandbox Code Playgroud)
并使您的活动如下:
public event EventHandler<ListEventArgs> NewFileAdded;
Run Code Online (Sandbox Code Playgroud)
添加点火方法:
protected void OnNewFileAdded(List<string> data)
{
var localCopy = NewFileAdded;
if (localCopy != null)
{
localCopy(this, new ListEventArgs(data));
}
}
Run Code Online (Sandbox Code Playgroud)
当你想要处理这个事件时:
myObj.NewFileAdded += new EventHandler<ListEventArgs>(myObj_NewFileAdded);
Run Code Online (Sandbox Code Playgroud)
处理程序方法如下所示:
public void myObj_NewFileAdded(object sender, ListEventArgs e)
{
// Do what you want with e.Data (It is a List of string)
}
Run Code Online (Sandbox Code Playgroud)
您可以将事件的签名定义为您想要的任何内容。如果事件需要提供的唯一信息是该列表,则只需传递该列表:
public event Action<List<string>> MyEvent;
private void Foo()
{
MyEvent(new List<string>(){"a", "b", "c"});
}
Run Code Online (Sandbox Code Playgroud)
然后在订阅事件时:
public void MyEventHandler(List<string> list)
{
//...
}
Run Code Online (Sandbox Code Playgroud)