Привет всем!
Есть следующий код
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, значит ссылок на обьект больше нет и обьект должен уничтожится.
Почему этого не происходит?