3

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

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

所以我的问题是:(如何)是否可以从其他类中的不同线程关闭表单?更重要的是最佳实践吗?

4

1 回答 1

2

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

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

public void CloseForm()
{
    if (this.InvokeRequired)
    {
        this.BeginInvoke(new Action(this.Close));
    }
    else
    {
        this.Close();
    }
}

从另一个线程调用是安全的。

于 2013-04-18T08:09:38.417 回答