C# 对后台工作程序使用语句

C# 对后台工作程序使用语句,c#,backgroundworker,using,C#,Backgroundworker,Using,我已经查看了几个backgroundworkers的示例,并且我遇到了与此类似的代码 public class MyClass { public MyClass() { using(BackgroundWorker _Worker = new BackgroundWorker { WorkerReportsProgress = true}) { _Worker.DoWork += (s, args) => { ...

我已经查看了几个backgroundworkers的示例,并且我遇到了与此类似的代码

public class MyClass
{
  public MyClass()
  {
    using(BackgroundWorker _Worker = new BackgroundWorker { WorkerReportsProgress = true})
    {
      _Worker.DoWork += (s, args) =>
      {
        ...
      };
    }
    _Worker.RunWorkerAsync();
  }
}

我没有在我的代码中像这样使用“using”语句。在使用CodeRush试用版时,我遇到了类似的情况,这让我回到这段代码,并质疑我是否应该这样做。请帮助我了解这是否/为什么是最佳做法。谢谢。

使用
这样的
关键字只需为您处理dispose。如果没有它,您将不断地编写
try/catch/finally
块,以确保实现IDisposable的对象被正确地处理

还请注意,如果有多个对象需要处理,则可以在using语句中放置多个声明:

using (Font font3 = new Font("Arial", 10.0f), 
           font4 = new Font("Arial", 10.0f))
{
    // Use font3 and font4.
}

下面是它的作用域。

使用
语句定义了一个作用域,对象将在该作用域之外进行处理。因此,这只是一个自动处理资源的约定。从

using语句允许程序员指定 使用资源应该释放它们。提供给用户的对象 语句必须实现IDisposable接口。此接口 提供Dispose方法,该方法应释放对象的 资源


这在您的场景中是完全可以接受的。

using语句代替了用try/catch块包围代码。但不是所有的东西都能使用using语句;只有实现Dispose()的对象才可以。

实际上不需要处置BackgroundWorker
,请参阅。因此,没有必要使用
using
子句