2012-04-15 108 views
2

上下文:我试图做的应用程序最初不显示表单,但只有一个打开的文件对话框。选择文件后,应用程序可以退出或打开表单。Application.Run后Application.Exit不起作用

我在调用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

+3

但是在这段代码中,你要在* Run()之前调用'Exit()'*。 – svick 2012-04-15 10:25:31

+0

你说得对。那么如何让跑出呼叫后的退出呼叫运行?我可以将退出调用发送到Application.Run()执行的消息循环吗? – KeyboardDrummer 2012-04-15 10:37:51

回答

1

你可以尝试退出逻辑移动到一个新的方法:

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

,需要

时有 Application.Run呼叫 context.Exit()

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

2
var context = new Context(); 

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