3
好吧,我有一个C#表格与几个类。在其中一个类中,我运行一个线程来检查外部程序是否正在运行。当外部程序没有运行时,我想让我的程序关闭。C#关闭程序/线程形式
我是一个新手,所以对我来说,明显的答案是使用form.Close()。但我不确定是否可以从子类或甚至不同的线程访问此函数!
所以我的问题是:(如何)是否有可能从其他类中的另一个线程关闭窗体?更重要的是这种最佳做法?
好吧,我有一个C#表格与几个类。在其中一个类中,我运行一个线程来检查外部程序是否正在运行。当外部程序没有运行时,我想让我的程序关闭。C#关闭程序/线程形式
我是一个新手,所以对我来说,明显的答案是使用form.Close()。但我不确定是否可以从子类或甚至不同的线程访问此函数!
所以我的问题是:(如何)是否有可能从其他类中的另一个线程关闭窗体?更重要的是这种最佳做法?
您可以使用Control.InvokeRequired
和Control.BeginInvoke()
以调用UI线程上的方法。
例如(此方法必须是形式类本身的内部):
public void CloseForm()
{
if (this.InvokeRequired)
{
this.BeginInvoke(new Action(this.Close));
}
else
{
this.Close();
}
}
这是安全的从另一个线程中调用。
感谢您的快速响应! – Jordy
检查此:http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/2cb9cd98-b638-4378-9349-fbb6598e5092/ –