2011-08-09 15 views
5

Mam był patrząc na kilka przykładów backgroundworkers i natknąłem kodu, który wygląda podobnie do tegopomocą instrukcji na tle pracownik

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

nie zostały przy użyciu „używając” statment w moim kodu takiego. Podczas korzystania z wersji próbnej programu Code Rush napotkałem coś podobnego, co spowodowało, że wróciłem do tego kodu i zadałem pytanie, czy powinienem to zrobić, czy nie. Proszę pomóż mi zrozumieć, czy/dlaczego to byłaby najlepsza praktyka. Dzięki.

Odpowiedz

1

Faktycznie BackgroundWorker nie musi być usuwany, patrz here. Nie ma więc potrzeby posiadania klauzuli

1

Posługiwanie się tym słowem kluczowym po prostu zajmuje się likwidacją. Bez tego ciągle pisalibyście bloki try/catch/finally, aby upewnić się, że obiekty implementujące IDisposable zostały prawidłowo rozmieszczone.

Należy również pamiętać, że można umieścić wiele oświadczeń w użyciu instrukcji, jeśli masz wiele obiektów, które muszą być umieszczone:

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

oto MSDN documentation na nim.

1

Instrukcja using definiuje zakres, w którym poza obiektami zostaną usunięte. Jest to więc tylko konwencja, dzięki której zasoby są usuwane automatycznie. Od MSDN,

instrukcji using pozwala programiście określić, kiedy obiekty wykorzystanie zasobów należy je zwolnić. Obiekt dostarczany do użycia oświadczenia musi implementować interfejs IDisposable. Ten interfejs udostępnia metodę Dispose, która powinna zwolnić zasoby obiektu .

Jest to całkowicie dopuszczalne w twoim scenariuszu.

1

Instrukcja użycia ma wpływ na otaczanie kodu za pomocą bloku try/catch. Ale nie wszystko może używać instrukcji using; tylko obiekty implementujące Dispose().

Powiązane problemy