如何关闭从Main()启动的窗体而不会出现跨线程错误
本文关键字:错误 线程 窗体 Main 何关闭 启动 | 更新日期: 2023-09-27 17:53:00
我有一个Windows表单应用程序,可以从命令行调用或用作GUI。命令行选项仅用于调度程序以运行已保存的任务,因此我不希望在使用命令行选项时启动GUI。
static void Main()
{
//code to parse the command line options
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
Application.Run(new MainForm());
}
}
public MainForm()
{
//Loading data from a file into the form.
If (ArgumentList.Length >0)
{
//do command line-requested tasks
this.close();
}
else
{
//do GUI tasks
}
}
我如何关闭MainForm窗口而不使ObjectDisposedException的实例被抛出?如果我在
之后使用任何东西Application.Run(new MainForm());
它不会运行,因为该表单已经打开,并且在该行之后没有任何运行,直到窗体关闭。我试过了
this.Hide();
代替
this.Close();
但是this. hide()在这种情况下似乎没有做任何事情,因为表单仍然显示。我知道我不应该尝试从窗体内关闭窗体(交叉线程),但如果我不希望GUI窗体显示从命令行调用
您应该将该代码移动到Main()
,如果不需要它,则完全避免该表单。