используя оператор для фонового работника - PullRequest
5 голосов
/ 09 августа 2011

Я просмотрел несколько примеров специалистов по работе с фоном и наткнулся на код, похожий на этот

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

Я не использовал в своем коде оценку «использование».Я столкнулся с чем-то похожим во время использования пробной версии Code Rush, что заставило меня вернуться к этому коду и задать вопрос, должен ли я это делать или нет.Пожалуйста, помогите мне понять, если / почему это будет наилучшей практикой.Спасибо.

Ответы [ 4 ]

1 голос
/ 09 августа 2011

На самом деле BackgroundWorker не нуждается в утилизации, см. здесь .Таким образом, нет необходимости иметь using предложение

1 голос
/ 09 августа 2011

Оператор using определяет область действия, за пределами которой будут удалены объекты. Так что это просто соглашение, по которому ресурсы удаляются автоматически. От MSDN ,

Оператор using позволяет программисту указывать, когда объекты Использование ресурсов должно освободить их. Объект, предоставленный для использования оператор должен реализовывать интерфейс IDisposable. Этот интерфейс предоставляет метод Dispose, который должен освобождать объект ресурсы.

Это вполне приемлемо в вашем сценарии.

1 голос
/ 09 августа 2011

Оператор using имеет место, окружая ваш код блоком try / catchНо не все могут использовать оператор using;могут только объекты, которые реализуют Dispose ().

1 голос
/ 09 августа 2011

Использование такого ключевого слова 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 это.

...