【发布时间】:2020-04-22 16:47:20
【问题描述】:
我的意思是使用下面的语句,在我的类的构造函数中使用FileSystemWatcher 实例,在这样的类构造函数中使用using 语句是否有意义,或者它必须在没有using 语句的构造函数中?
public partial class MyService : ServiceBase
{
FileInfo file;
StreamWriter writer;
FileSystemWatcher watcher1;
FileSystemWatcher watcher2;
FileSystemWatcher watcher3;
public MyService()
{
InitializeComponent();
file = new FileInfo(@"D:\LOGS\Log.txt");
writer = file.CreateText();
//I mean this using
using (watcher1 = new FileSystemWatcher(@"C:\"))
{
watcher1.Created += OnChanged;
watcher1.Deleted += OnChanged;
watcher1.Renamed += OnRenamed;
watcher1.Changed += OnChanged;
watcher1.EnableRaisingEvents = true;
}
//I mean this using
using (watcher3 = new FileSystemWatcher(@"C:\Users"))
{
watcher3.IncludeSubdirectories = true;
watcher3.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite |
NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher3.Created += OnChanged;
watcher3.Deleted += OnChanged;
watcher3.Renamed += OnRenamed;
watcher3.Changed += OnChanged;
watcher3.Filter = "*.*";
watcher3.EnableRaisingEvents = true;
}
//I mean this using
using (watcher2 = new FileSystemWatcher(@"D:\"))
{
watcher2.IncludeSubdirectories = true;
watcher2.Created += OnChanged;
watcher2.Deleted += OnChanged;
watcher2.Renamed += OnRenamed;
watcher2.Changed += OnChanged;
watcher2.EnableRaisingEvents = true;
}
}
【问题讨论】:
-
您是否在构造函数之外使用它们以及如何使用它们?
-
是的,观察者实例可以在构造函数之外使用,问题是构造函数内部是否需要 using 语句。
-
没有。
using将立即处理对象。当您确定不再需要它们时,您需要保留引用并在以后明确地处置对象。请参阅标记的重复项以获取答案。
标签: c# constructor dispose using-statement