如果我有以下代码:
MyClass pClass = new MyClass();
pClass.MyEvent += MyFunction;
pClass = null;
Run Code Online (Sandbox Code Playgroud)
pClass会被垃圾收集吗?或者它会在它们发生的时候仍然停止发射?我是否需要执行以下操作才能进行垃圾回收?
MyClass pClass = new MyClass();
pClass.MyEvent += MyFunction;
pClass.MyEvent -= MyFunction;
pClass = null;
Run Code Online (Sandbox Code Playgroud) 使用FileSystemWatcher,是否有办法在事件触发后处理事件侦听器的实例?
我的程序基本上监听在新创建的文件夹中创建batch.complete.xml文件.程序检测到文件已创建后,无需继续侦听此文件夹.
我的程序看起来像这样:
public static void watchxmlfile(batchfolderpath){
var deliverycompletewatcher = new FileSystemWatcher();
deliverycompletewatcher.Path = batchfolderpath;
deliverycompletewatcher.Filter = "*.xml";
deliverycompletewatcher.Created += new FileSystemEventHandler(OnChanged);
deliverycompletewatcher.EnableRaisingEvents = true;
}
private static void OnChanged(object sender, FileSystemEventArgs e)
{
BuildingestionXml(string.Format(@"{0}\{1}",e.FullPath,e.Name));
Console.WriteLine(@"Second: Success sending{0}\{1}", e.FullPath, e.Name);
}
Run Code Online (Sandbox Code Playgroud)
因此,当上述事件被触发时,我不再需要在"batchfolderpath"中监视事件,除非显式调用watchxmlfile(),它将具有新路径.
我试图防止上述事件的过多侦听器实例的内存泄漏.