A类有一个Form1(System.Windows.Forms.Form的子类)成员。
class A {
Form1 form;
public A()
{
form = new Form1();
form.Show();
}
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
A a = new A();
Application.Run();
}
问题是我不知道如何退出程序。我在处理Form.Closed
事件或调用A.Dispose()时尝试过Application.Exit(),但Windows任务管理器仍然列出了我的程序进程。
如何完成此计划?
答案 0 :(得分:4)
Application.Run has 3 overload秒。您正在使用this一个没有参数。
Windows以message loop 运行您的程序,但它不关心您的表单。
所以如果你关闭你的表格并不重要;程序仍然会运行。
第二次重载是每个人都使用的,Application.Run(Form)。这个在窗体上运行Windows消息循环,因此当您在窗口上单击关闭时,应用程序将关闭。
您的代码应为:
class A {
Form1 form;
public A()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
form = new Form1();
form.Show();
Application.Run(form);
}
}
[STAThread]
static void Main()
{
A a = new A();
}
答案 1 :(得分:2)
关注Microsoft,你应该使用它:
Application.Run(a.Form);
因为MSDN说明了
大多数Windows窗体开发人员不需要使用此版本的方法。您应该使用Run(Form)重载来启动具有主窗体的应用程序,以便在关闭主窗体时应用程序终止。
答案 2 :(得分:1)
我认为那里有混音。查看Application.Exit的文档。
在那里您将看到Exit将为您引发Closed事件,并且调用Exit可能会导致无限循环(这可能导致您的问题,应用程序仍然可见)。
答案 3 :(得分:0)
试试这个:
Environment.Exit(1);