0
string[] directories = textBox5.Text.Split(new Char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
FileSystemWatcher[] fileSysWatchers = new FileSystemWatcher[directories.Length];
for (int i = 0; i < directories.Length; i++)
        {
            directories[i] = directories[i].Replace("\n", "");
            directories[i] = directories[i].Replace("\r", "");
            fileSysWatchers[i].Path = directories[i];
            if (checkBox8.Checked)
            {
                fileSysWatchers[i].Created += new FileSystemEventHandler(Form1_Created);
            }
        }    

我在下一行 得到NullReferenceException :

fileSysWatchers[i].Path = directories[i];

我检查了目录 [0]并发现它没有.Path但我不明白为什么,它必须。
基本上,我想为某个列表中的每个目录创建一个特定的 FileSystemWatcher,并仅使用一个 EventHandler处理它们的所有“创建”事件。如果有某种方法可以只使用一个 FileSystemWatcher 来监视多个目录,我想知道这一点。
如果我的英语不完美,对不起。

4

1 回答 1

4

您只分配了一个能够保存 FileSystemWatcher 实例而不是实例本身的数组。

您缺少以下行(在崩溃的行之前):

fileSysWatchers[i] = new FileSystemWatcher();

不是Path那个null,它是 FileSystemWatcher 实例本身。

于 2012-07-29T18:15:34.080 回答