好的,我有一个带有几个类的 C# 表单。其中一个类中,我正在运行一个线程来检查外部程序是否正在运行。当外部程序未运行时,我希望我的程序关闭。
作为一个新手,对我来说,显而易见的答案是使用 form.Close()。但是我不确定是否可以从子类甚至不同的线程访问此函数!
所以我的问题是:如何从另一个类的不同线程关闭表单?更重要的是这是否是最佳实践?
好的,我有一个带有几个类的 C# 表单。其中一个类中,我正在运行一个线程来检查外部程序是否正在运行。当外部程序未运行时,我希望我的程序关闭。
作为一个新手,对我来说,显而易见的答案是使用 form.Close()。但是我不确定是否可以从子类甚至不同的线程访问此函数!
所以我的问题是:如何从另一个类的不同线程关闭表单?更重要的是这是否是最佳实践?
Control.InvokeRequired
和 Control.BeginInvoke()
来在 UI 线程上调用方法。public void CloseForm()
{
if (this.InvokeRequired)
{
this.BeginInvoke(new Action(this.Close));
}
else
{
this.Close();
}
}
这个方法可以安全地从另一个线程调用。