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分钟,我想,当垃圾邮件出现时,我会标记它,谢谢你!