Значок все еще можно использовать после вызова Dispose ()?

Я пытался разобрать часть нашего кода, используя правильно Dispose в ряде мест, где что-то оставалось без дела. Когда-то таким экземпляром были иконки, и я заметил кое-что, что мне показалось странным: если я вызову Icon.Dispose () , я все еще смогу использовать Icon.

Так что я извлек его в небольшой консольное приложение, которое, как я ожидал, выйдет из строя (выбросить исключение ObjectDisposedException), но этого не произошло ... Не понимаю ли я, что здесь должно выполняться dispose?

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.IO;

namespace DisposeTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Icon icon = new Icon(@"C:\temp\test.ico");
            icon.ToBitmap().Save(@"C:\temp\1.bmp");
            icon.Save(new FileStream(@"C:\temp\1.ico", FileMode.OpenOrCreate, FileAccess.ReadWrite));
            icon.Dispose();
            GC.Collect(); // Probably not needed, but just checking.
            icon.Save(new FileStream(@"C:\temp\2.ico", FileMode.OpenOrCreate, FileAccess.ReadWrite));
            icon.ToBitmap().Save(@"C:\temp\2.bmp");
        }
    }
}
5
задан Ian 16 August 2011 в 14:08
поделиться