我有一个函数可以帮助我关闭表单而不会出现交叉错误:
public void OutsideClose(long Id)
{
MessageBox.Show("");
if (InvokeRequired)
{
Invoke(new Action<long>(OutsideClose), Id);
}
else
{
var asdf = ListForm.Find(a => a.Id == Id);
if (asdf != null)
{
asdf.Close();
}
}
}
出于某种原因,如果我调用此调用两次,而不是第二次关闭该表单,则转到此dispose方法:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
我希望表单关闭,并且不知道发生了什么......
答案 0 :(得分:1)
asdf.Close应该调用asdf.Dispose。
答案 1 :(得分:0)
第二次调用方法时,不应找到带有id的表单。
var asdf = ListForm.Find(a => a.Id == Id);
if (asdf != null)
{
ListForm.Remove(asdf); //or whatever you need to do to remove it...
asdf.Close();
}