static void Main(string[] args) { using (MyResourceWrapper rw = new MyResourceWrapper()) { rw.Dispose(); } Console.ReadLine(); MyResourceWrapper rw2 = new MyResourceWrapper(); }
static void Main(string[] args) { Console.WriteLine("***** Dispose() / Destructor Combo Pattern *****"); MyResourceWrapper rw = new MyResourceWrapper(); rw.Dispose(); MyResourceWrapper rw2 = new MyResourceWrapper(); }
static void Main(string[] args) { Console.WriteLine("**** Dispose / Destructor Combo Platter ****"); MyResourceWrapper rw1 = new MyResourceWrapper(); rw1.Dispose(); // If Dispose() was invoked, destructor will be suppressed MyResourceWrapper rw2 = new MyResourceWrapper(); }
static void Main(string[] args) { Console.WriteLine("***** Dispose() / Destructor Combo Platter *****"); // Call Dispose() manually. This will not call the finalizer. MyResourceWrapper rw = new MyResourceWrapper(); rw.Dispose(); // Don't call Dispose(). This will trigger the finalizer and cause a beep. MyResourceWrapper rw2 = new MyResourceWrapper(); }
static void Main(string[] args) { Console.WriteLine("***** Dispose() / Destructor Combo Platter *****"); // Call Dispose() manually. This will not call the finalizer. MyResourceWrapper rw = new MyResourceWrapper(); rw.Dispose(); // Dont call Dispose(). This will trigger the finalizer when the object gets garbage collected. MyResourceWrapper rw2 = new MyResourceWrapper(); }
static void Main( string[] args ) { Console.WriteLine("***** Dispose() / Destructor Combo Platter *****"); // Call Dispose() manually, this will not call the finalizer. MyResourceWrapper rw = new MyResourceWrapper(); rw.Dispose(); // Don't call Dispose(), this will trigger the finalizer // and cause a beep. MyResourceWrapper rw2 = new MyResourceWrapper(); }
static void Main(string[] args) { Debug.WriteLine("***** Dispose() / Destructor Combo Platter *****"); // Вызов метода Dispose () вручную; метод финализации //в таком случае вызываться не будет. MyResourceWrapper rw = new MyResourceWrapper(); rw.Dispose(); // Пропуск вызова метода Dispose () ; в таком случае будет // вызываться метод финализации и выдаваться звуковой сигнал. MyResourceWrapper rw2 = new MyResourceWrapper(); }
static void Main(string[] args) { Console.WriteLine("***** Dispose() / Destructor Combo Platter *****"); // Call Dispose() manually, this will not call the destructor. // Comment out the Dispose() call to hear 2 beeps. MyResourceWrapper rw = new MyResourceWrapper(); rw.Dispose(); // Don't call Dispose(), this will trigger the destructor // and cause a beep. MyResourceWrapper rw2 = new MyResourceWrapper(); }
static void Main(string[] args) { Console.WriteLine("***** Dispose() / Destructor Combo Platter *****"); // вызвать метод Dispose() вручную. Это не приведет к вызову финализатора MyResourceWrapper rw = new MyResourceWrapper(); rw.Dispose(); // не вызывать метод Dispose(). Это приведет к вызову финализатора // и выдаче звукового сигнала MyResourceWrapper rw2 = new MyResourceWrapper(); Console.ReadLine(); }
static void Main(string[] args) { Console.WriteLine("***** Finalizable / Disposable Type *****"); Console.WriteLine("This program does nothing."); Console.WriteLine("See MyResourceWrapper.cs for code"); Console.WriteLine("*****************************************"); // Dispose automatically called. using (MyResourceWrapper rw = new MyResourceWrapper()) { } // This is safe given the disposable pattern. MyResourceWrapper rw2 = new MyResourceWrapper(); for (int i = 0; i < 10; i++) { rw2.Dispose(); } Console.ReadLine(); }