在一个解决方案中为我的主程序创建一个辅助程序(.exe文件)?

时间:2014-08-05 18:28:37

标签: c# winforms visual-studio

我有一个应用程序,当某个事件发生时会自动关闭。 当应用程序以这种方式关闭时,我的应用程序所做的最后一件事就是告诉Windows关闭。 通过调用以下命令来关闭Windows:

private void OnProcessExit(object sender, EventArgs e)
    {
        //If class level flag set shut down Windows with a delay of xx seconds
        if (shutdownWindowsOnExit)
            System.Diagnostics.Process.Start("shutdown", "/s /t 30");

    }

用户必须能够在应用程序关闭后取消关闭Windows,这就是定义30秒延迟的原因。 为了做到这一点,我只是在桌面上放置了一个常规快捷方式,然后在按下时调用以下内容(取消Windows关闭):

C:\Windows\System32\shutdown.exe /a

我想要的是摆脱快捷方式并在出现(对于用户来说)属于我的应用程序(刚刚关闭)的内容中实现取消代码。

我考虑过简单地创建一个小的独立应用程序,它包含一个带有按钮的表单,表示“按此处取消Windows关闭”。 然后,我可以在调用

后立即从我的主应用程序启动这个小应用程序
System.Diagnostics.Process.Start("shutdown", "/s /t 30");

这样我就可以确定我的主应用程序是安全关闭的,并且在Windows关闭时Windows只会终止小型辅助应用程序。

我知道可以在Visual Studio中的一个解决方案中包含两个项目,但是创建一个单独的项目(使用settings.settings文件,app.config文件,版本控制等)来创建这个小小的感觉有点过头了。辅助计划。

我现在的问题是: 我是否可以通过某种方式将此单独的表单编译并编译为Visual Studio中现有项目中的单独.exe文件,而无需在一个解决方案中使用两个完整的单独项目。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

为什么不执行以下操作:

  1. 执行所有必需的关机流程(减去杀死应用程序),
  2. 关闭主窗体并使用计时器和取消按钮打开新表单
  3. 当计时器启动时,终止应用程序并关闭窗口
  4. 如果用户取消杀死应用程序但不关闭窗口
  5. 终止应用程序时,确保没有后台线程仍在运行以避免

      

    "应用程序没有正常关闭"