使用语句为后台工作者

时间:2011-08-09 17:18:18

标签: c# backgroundworker using

我一直在查看几个背景工作者的例子,我遇到了类似于这个

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

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

4 个答案:

答案 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子句