Как убить экземпляр класса?
От: Vyacheslav_M  
Дата: 24.07.02 16:45
Оценка:
Привет всем!

Есть следующий код

public class MessageBox : System.Windows.Forms.Form
{
...
    private static MessageBox instance;
    
    public static void Show(string message,string title)
    {
        if(instance==null)instance=new MessageBox(message,title);
    }

    public MessageBox(string message,string title)
    {
        InitializeComponent();
        this.lblMessage.Text=message;
        this.ShowDialog();
    }

    ~MessageBox()
    {
        System.Windows.Forms.MessageBox.Show("Деструктор","");
    }

    private void cmdOk_Click(object sender, System.EventArgs e)
    {
        instance=null;
        this.Close();    
    }
...
}


public class frmMain : System.Windows.Forms.Form
{
...
    private void cmdShowMessage(object sender, System.EventArgs e)
    {
        MessageBox.Show("Message1","");
        MessageBox.Show("Message2"."");
    }
...


При запуске увидим Message1 и никогда не увидим Message2, а Деструктор вызовется только при завершении приложения. Почему? Ведь при нажатии кнопки cmdOk окно закрывается а переменной instance присваивается null, значит ссылок на обьект больше нет и обьект должен уничтожится.
Почему этого не происходит?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.