相关疑难解决方法(0)

事件处理程序是否阻止垃圾收集发生?

如果我有以下代码:

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)

.net c# garbage-collection event-handling

178
推荐指数
3
解决办法
3万
查看次数

如何从FileSystemWatcher事件中处理事件侦听器

使用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(),它将具有新路径.

我试图防止上述事件的过多侦听器实例的内存泄漏.

c# filesystemwatcher

1
推荐指数
2
解决办法
4912
查看次数