C# Can';不要从事件中关闭窗体
我的主窗体名为Form1,它有一个类,其中包含一个事件,该事件指示Form1应该关闭 当我收到事件并尝试关闭时,我得到一个例外,那就是必须使用control.invoke。好吧,我用这个代码打电话,但仍然得到相同的异常:C# Can';不要从事件中关闭窗体,c#,invoke,C#,Invoke,我的主窗体名为Form1,它有一个类,其中包含一个事件,该事件指示Form1应该关闭 当我收到事件并尝试关闭时,我得到一个例外,那就是必须使用control.invoke。好吧,我用这个代码打电话,但仍然得到相同的异常: void Prox_OkEvent(object sender, EventArgs e) { if (this.InvokeRequired) { callControlhandler c = new callControlhandler(Cl
void Prox_OkEvent(object sender, EventArgs e)
{
if (this.InvokeRequired)
{
callControlhandler c = new callControlhandler(CloseForm);
c.Invoke();
}
else Close();
}
private void CloseForm()
{
try { this.Close(); }
catch (Exception e) { MessageBox.Show(e.Message); }
}
问题在哪里?感谢您提供的任何帮助
应针对表单
本身调用调用
。在这种情况下,它是针对c
调用的
试试看
if (this.InvokeRequired)
{
this.Invoke(new Action(CerrarForm));
}
应针对
表单本身调用Invoke
。在这种情况下,它是针对c
调用的
试试看
if (this.InvokeRequired)
{
this.Invoke(new Action(CerrarForm));
}
这个电话来自不同的线程吗?你能发布准确的错误吗?也试着阅读Jon Skeet的答案-CerrarForm
是指CloseForm
?这个调用来自不同的线程吗?你能发布准确的错误吗?也试着阅读Jon Skeet的答案-CerrarForm
是指CloseForm
?+1Invoke
的目的是将其传递给GUI线程。OP的代码只是调用当前线程上的委托。+1Invoke
的要点是将其传递给GUI线程。OP的代码只是调用当前线程上的委托。