c#使用线程关闭程序/表单

本文关键字:表单 关闭程序 线程 | 更新日期: 2023-09-27 18:09:41

好的,我有一个c#表单,有几个类。在其中一个类中,我正在运行一个线程来检查外部程序是否正在运行。当外部程序没有运行时,我希望我的程序关闭。

我是一个新手,所以对我来说最明显的答案是使用form.Close()。但我不确定是否可以从子类甚至不同的线程访问此函数!

所以我的问题是:(如何)有可能关闭窗体从一个不同的线程在另一个类?更重要的是这种最佳实践吗?

c#使用线程关闭程序/表单

您可以使用Control.InvokeRequiredControl.BeginInvoke()来调用UI线程上的方法。

例如(该方法必须在表单类本身内部):

public void CloseForm()
{
    if (this.InvokeRequired)
    {
        this.BeginInvoke(new Action(this.Close));
    }
    else
    {
        this.Close();
    }
}
从其他线程调用是安全的。