Własna klasa, destruktor i dispose

0
 
public class Test : IDisposable
    {
      public bool disposed;
      public Test()
      {

      }

      public void Dispose()
      {
        Dispose(true);
        GC.SuppressFinalize(this);
      }

      protected void Dispose(bool disposing)
      {
        if (!disposed)
        {
          if (disposing)
          {
            
          }
        }
        disposed = true;
      }

      ~Test()
      {
        MessageBox.Show("Destruktor");
      }
    }

To jest przykładowa jakaś klasa. W jaki sposób ją 'zniszczyć'? Wiem, że można za pomocą tego destruktora (finalizera), ale czy jest jeszcze jakiś inny sposób? Czy za pomocą Dispose da się to zniszczyć? Czy jakby tutaj nie było ~Test() to GC usuwałby to także? Bo czytałem o GC, Dispose i mam właśnie parę wątpliwości które tutaj opisałem.

0

Z tego co mi wiadomo to nie. Dodatkowo, używając Dispose wcale klasy nie 'niszczysz', tylko dajesz GC znać, że już jej nie potrzebujesz, a to czy GC ją 'zniszczy' to jego sprawa.

0

Co tutaj powinienem wpisać, żeby móc ręcznie ustawiać obiekt do niszczenia za pomocą Dispose?

protected void Dispose(bool disposing)
      {
        if (!disposed)
        {
          if (disposing)
          {
            ??????? <------
          }
        }
        disposed = true;
      }
 
0

co chcesz. wrzucaj tam to co masz do zniszczenia: jakieś otwarte pliki, połączenia, niezarządzane bloki pamięci, uchwyty winapi itp.
Jak nie masz nic do ręcznego zniszczenia to nie potrzebujesz Dispose.

0

Może źle wytłumaczyłem. Chodzi mi czy można jakoś ręcznie wywołać 'zniszczenie' tej klasy Test?

0

A czemu tak koniecznie chcesz ją 'zniszczyć'?

1
untrackable napisał(a)

Może źle wytłumaczyłem. Chodzi mi czy można jakoś ręcznie wywołać 'zniszczenie' tej klasy Test?

Co rozumiesz przez "zniszczenie"?

Bo dla mnie zniszczenie klasy to usunięcie jej z kodu źródłowego. Wtedy klasa jest zniszczona i jej nie ma.

1 użytkowników online, w tym zalogowanych: 0, gości: 1