繁体   English   中英

后台工作人员使用语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM