與nvoigt說的相反,我認爲創建一個從FileSystemWatcher
派生的類型是一種矯枉過正。
更好的選擇是讓您的CustomDirectorySetting
類型的事件處理程序,這意味着它將能夠通過this
訪問您需要的數據。
class CustomDirectorySetting
{
public string Directory { get; set; }
public void OnChanged(object sender, FileSystemEventArgs e)
{
// your code here
}
}
…
List<CustomDirectorySetting> list = …;
foreach (var setting in list)
{
var fsw = new FileSystemWatcher(setting.Directory);
fsw.Changed += setting.OnChanged;
fsw.EnableRaisingEvents = true;
}
另一種選擇是使用lambda:
private static void OnChanged(
CustomDirectorySetting setting, FileSystemEventArgs eventArgs)
{
// your code here
}
…
foreach (var setting in list)
{
var fsw = new FileSystemWatcher(setting.Directory);
CustomDirectorySetting settingCopy = setting;
fsw.Changed += (sender, eventArgs) => OnChanged(settingCopy, eventArgs);
fsw.EnableRaisingEvents = true;
}
在這種情況下,它可能是一個好主意,不要直接在拉姆達使用循環變量,因爲它會無法正常工作舊版本的C#。
什麼是CustomDirectorySetting對象? – Paparazzi 2013-04-10 14:20:43
@Blam - 對於混淆抱歉 - 我應該解釋說這是一種特定於應用程序的自定義類型。它不是BCL的一部分。 – STLDeveloper 2013-04-10 16:22:37