我一直在查看几个背景工作者的例子,我遇到了类似于这个
的代码public class MyClass
{
public MyClass()
{
using(BackgroundWorker _Worker = new BackgroundWorker { WorkerReportsProgress = true})
{
_Worker.DoWork += (s, args) =>
{
...
};
}
_Worker.RunWorkerAsync();
}
}
我没有像我这样使用代码中的“using”语句。我在使用Code Rush试用版时碰到了类似的东西,这让我回到这个代码并质疑我是否应该这样做。请帮助我了解是否/为什么这是最佳做法。感谢。
答案 0 :(得分:1)
使用using
关键字,只需处理您的处理。没有它,你将不断编写try / catch / finally
块,以确保实现IDisposable的对象被正确处理。
另请注意,如果您有多个需要处理的对象,可以在using语句中放置多个声明:
using (Font font3 = new Font("Arial", 10.0f),
font4 = new Font("Arial", 10.0f))
{
// Use font3 and font4.
}
这是MSDN documentation就可以了。
答案 1 :(得分:1)
using
语句定义了一个范围,在该范围之外将放置对象。因此,这只是一种自动处理资源的惯例。来自MSDN,
using语句允许程序员指定对象的时间 使用资源应该释放它们。提供给使用的对象 语句必须实现IDisposable接口。这个界面 提供Dispose方法,该方法应该释放对象 资源。
在您的方案中完全可以接受。
答案 2 :(得分:1)
using语句使用try / catch块代替您的代码。但并非所有东西都可以使用using语句;只有实现Dispose()的对象才能。
答案 3 :(得分:1)
实际上BackgroundWorker
不需要处理,请参阅here。所以不需要using
子句