在C#中捕获错误时出错

Con*_*nor 4 c#

我试图捕捉我的表单的结束,以便当用户退出时,它将"用户已退出"保存到文本文件,这是我的代码:

private void mainForm_FormClosing(object sender, FormClosingEventArgs e)
   {

        if (String.IsNullOrEmpty(directory))
        {
            Close();
            e.Cancel = false;
        }
        else
        {
            string time = DateTime.Now.ToString("hh:mm");

            TextWriter msg = new StreamWriter(directory, true);

            msg.WriteLine(" (" + time + ") == " + uName + " Has Left The Chat == ");

            msg.Close();

            Close();
            e.Cancel = false;
        }
   }
Run Code Online (Sandbox Code Playgroud)

我的问题是,我收到此错误:

"确保没有无限循环或无限递归"

有想法该怎么解决这个吗?

Pat*_*uza 8

您不能从表单关闭调用Close()方法.删除所有Close()调用,它将工作.

private void mainForm_FormClosing(object sender, FormClosingEventArgs e)
{
    if (String.IsNullOrEmpty(directory))
    {
        e.Cancel = false;
    }
    else
    {
        string time = DateTime.Now.ToString("hh:mm");

        using(TextWriter msg = new StreamWriter(directory, true))
        { 
            msg.WriteLine(" (" + time + ") == " + uName + " Has Left The Chat == ");
            msg.Close();
        }
        e.Cancel = false;
    }
}
Run Code Online (Sandbox Code Playgroud)