Я думаю, что проблема в том, что вам нужно в вашей лямбде элемент из цикла foreach.Создайте его локальную копию в цикле, и все должно работать нормально:
foreach (ConfigurationSectionGroup sectionGroup in sectionGroups)
{
if (sectionGroup.Name == "FileCheckerConfigGroup")
{
foreach(ConfigurationSection configurationSection in sectionGroup.Sections)
{
//FileChecker filecheck = new FileChecker();
//filecheck.ProccessFolders(configurationSection);
//FileChecker filecheck = new FileChecker();
var localConfigurationSectionCopy = configurationSection;
var section = ConfigurationManager.GetSection(configurationSection.SectionInformation.SectionName) as NameValueCollection;
watcher = new FileSystemWatcher(section["inputDirectory"]);
watcher.EnableRaisingEvents = true;
watcher.Created += (sender, e) =>
{
using (var filecheck = new FileChecker())
{
filecheck.ProccessFolders(localConfigurationSectionCopy);
}
};
}
}
}
Чтобы лучше объяснить, что происходит, взгляните на этот блог от Эрика .