Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在循环中创建Filewatcher对象_C#_Oop - Fatal编程技术网

C#在循环中创建Filewatcher对象

C#在循环中创建Filewatcher对象,c#,oop,C#,Oop,我正在下面的循环中创建一个Filewatcher。我想知道是否存在任何性能或引用问题,因为我的引用变量在循环中是相同的 foreach (var dir in dirsToWatch) { **var watcher = new FileSystemWatcher(dir);** watcher.Filter = filter; watcher.Changed += new FileSystemEventHandler(onChange); watcher.Cre

我正在下面的循环中创建一个
Filewatcher
。我想知道是否存在任何性能或引用问题,因为我的引用变量在循环中是相同的

foreach (var dir in dirsToWatch)
{
    **var watcher = new FileSystemWatcher(dir);**
    watcher.Filter = filter;
    watcher.Changed += new FileSystemEventHandler(onChange);
    watcher.Created += new FileSystemEventHandler(onChange);
}

现在还不清楚代码的最终目标是什么,但是如果您想在循环完成后使用
watcher
对象,那么您需要将它们的实例保存在循环之外的集合中。否则,您将没有对它们的引用,它们只会被垃圾收集

例如:

var watchers = new List<FileSystemWatcher>();

foreach (var dir in dirsToWatch)
{
    var watcher = new FileSystemWatcher(dir) {Filter = filter};
    watcher.Changed += new FileSystemEventHandler(onChange);
    watcher.Created += new FileSystemEventHandler(onChange);
    watchers.Add(watcher);
}

// Do something with watchers here

// Dispose of watchers when done
watchers.ForEach(watcher => watcher.Dispose());
var-watchers=newlist();
foreach(dirsToWatch中的var dir)
{
var-watcher=newfilesystemwatcher(dir){Filter=Filter};
watcher.Changed+=新文件系统EventHandler(onChange);
watcher.Created+=新文件系统EventHandler(onChange);
watchers.Add(watcher);
}
//对这里的观察者做点什么
//完成后处理观察者
ForEach(watcher=>watcher.Dispose());

否?基于你所拥有的,你被迫按你现在的方式去做。如果不引用
dir
,则无法创建
watcher
变量。每个循环迭代都将生成自己的
watcher
变量,但不能在循环外使用
watcher
。你在考虑处理这件物品吗?是的,我也在考虑处理。