自动重启应用程序在某些情况下崩溃

时间:2013-04-18 09:16:54

标签: visual-studio-2010 winapi visual-c++

如果我需要重新加载,我会使用RestartAPI重新启动我的应用程序。它工作正常,直到我启动任何Windows对话框(例如,打开对话),其结束时单击打开按钮!在这种情况下,如果我以后选择重新启动新应用程序(重新启动后)将无法打开任何文件。如果我单击取消按钮,新重新启动的应用程序将正常工作。

我花了很长时间才弄清楚两次重启之间的区别是打开按钮,其中一些Open Dialog与应用程序重启完全无关。请注意,我已经删除了单击“打开”按钮后执行的代码,因此无法通过“打开”按钮刚启动的某些内存损坏代码导致该代码。

只需单击“打开”按钮一次就足够了(所以我可以单击“取消”5次,而不是“打开”,例如3次“取消”),任何尝试重新启动应用程序但“迟到”将导致新实例不存在能够打开任何文件(甚至不能使用std::ifstream)。

一些细节:

  • Visual Studio 2010
  • Windows 7 x64(但与32位XP相同)
  • 对话框在单独的线程中启动
  • 我使用Allegro 5.0进行图形处理,但这不应该是相关的
  • 该对话框由GetOpenFileName函数
  • 启动

1 个答案:

答案 0 :(得分:-1)

我不了解RestartAPI,但您可以创建临时批处理文件,这将立即重启该进程。