[英]using statement for background worker
我一直在查看背景工作者的几个示例,并且遇到了与此类似的代码
public class MyClass
{
public MyClass()
{
using(BackgroundWorker _Worker = new BackgroundWorker { WorkerReportsProgress = true})
{
_Worker.DoWork += (s, args) =>
{
...
};
}
_Worker.RunWorkerAsync();
}
}
我没有像这样在我的代码中使用“使用”语句。 我在使用 Code Rush 试用版时遇到了类似的情况,这让我回到了这段代码并质疑我是否应该这样做。 请帮助我了解这是否/为什么是最佳做法。 谢谢。
使用这样的using
关键字只会为您处理 dispose。 没有它,您将不断编写try / catch / finally
块,以确保正确处理实现 IDisposable 的对象。
另请注意,如果您有多个需要处理的对象,则可以在 using 语句中放置多个声明:
using (Font font3 = new Font("Arial", 10.0f),
font4 = new Font("Arial", 10.0f))
{
// Use font3 and font4.
}
这是关于它的MSDN 文档。
using
语句定义了一个 scope,对象将被放置在该对象之外。 因此,这只是自动处理资源的约定。 来自MSDN ,
using 语句允许程序员指定使用资源的对象何时应该释放它们。 提供给 using 语句的 object 必须实现 IDisposable 接口。 该接口提供了 Dispose 方法,该方法应该释放对象的资源。
在您的场景中这是完全可以接受的。
using 语句用 try/catch 块包围您的代码。 但并不是所有东西都可以使用 using 语句; 只有实现 Dispose() 的对象可以。
实际上BackgroundWorker
不需要被释放,见这里。 所以不需要using
子句
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.