从其他线程调用是安全的。
好的,我有一个c#表单,有几个类。在其中一个类中,我正在运行一个线程来检查外部程序是否正在运行。当外部程序没有运行时,我希望我的程序关闭。
我是一个新手,所以对我来说最明显的答案是使用form.Close()。但我不确定是否可以从子类甚至不同的线程访问此函数!
所以我的问题是:(如何)有可能关闭窗体从一个不同的线程在另一个类?更重要的是这种最佳实践吗?
您可以使用Control.InvokeRequired
和Control.BeginInvoke()
来调用UI线程上的方法。
例如(该方法必须在表单类本身内部):
public void CloseForm()
{
if (this.InvokeRequired)
{
this.BeginInvoke(new Action(this.Close));
}
else
{
this.Close();
}
}