Application.Run后Application.Exit不起作用

时间:2012-04-15 10:19:24

标签: c# winforms

上下文:我正在尝试制作的应用程序最初不显示表单,而只显示打开的文件对话框。选择文件后,应用程序可以退出或打开表单。

在调用Application.Run()后我无法关闭我的应用程序。以下示例不会生成自杀的应用程序。

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        var context = new Context();
        Application.Run(context);
        Console.Beep();
    }
}

class Context : ApplicationContext
{
    public Context()
    {
        Application.Exit();
    }
}

另外,在我打开表格之前,我需要做些什么准备工作?在显示表单之前,是否需要调用Application.Run?

非常感谢! XOXO

2 个答案:

答案 0 :(得分:2)

var context = new Context();

使用此语句,您的应用程序将执行Application.Exit();之后你的语句Application.Run执行。这可能是原因

答案 1 :(得分:1)

您可以尝试将退出逻辑移动到新方法:

class Context : ApplicationContext 
{ 
  public void Exit() 
  { 
    Application.Exit(); 
  } 
} 

并在需要时Application.Run致电context.Exit()

原始方法的问题在于您将退出逻辑放在Context的构造函数中,这意味着每次创建Context对象时,您都有可能退出程序(它在您发布的代码的情况下是确定的)。取而代之的是Context捕获所有相关(上下文)信息,并在创建后进行显式方法调用时根据该信息做出退出决定。