Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中捕获关闭时出错#_C# - Fatal编程技术网

C# 在C中捕获关闭时出错#

C# 在C中捕获关闭时出错#,c#,C#,我试图捕捉表单的结尾,这样当用户退出时,它会将“用户已退出”保存到文本文件中,这是我的代码: private void mainForm_FormClosing(object sender, FormClosingEventArgs e) { if (String.IsNullOrEmpty(directory)) { Close(); e.Cancel = false; }

我试图捕捉表单的结尾,这样当用户退出时,它会将“用户已退出”保存到文本文件中,这是我的代码:

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;
        }
   }
我的问题是,我得到了这个错误:

“确保没有无限循环或无限递归”

有没有办法解决这个问题?

您不能从表单关闭调用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;
    }
}

您不需要调用
Close()
方法。如果执行了
mainformclosing
事件,已经有人调用了它。

由于表单已关闭,事件“mainformclosing”正在执行,无需在if和Else条件下调用“Close();”


如果您这样做,您将得到一个“System.StackOverflowException”

请仔细阅读Close将引发
formClosing
事件,因此您将再次调用它here@DanielHilgarth当前位置谢谢:)我正在努力,上面说我必须等10分钟,我想,当垃圾邮件出现时,我会标记它,谢谢你!