3

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

我花了很长时间才弄清楚两次重启之间的区别在于打开按钮和一些与应用程序重启完全无关的打开对话框。请注意,我已经消除了单击“打开”按钮后执行的代码,因此它不可能是由“打开”按钮刚刚启动的一些内存损坏代码引起的。

单击“打开”按钮一次就足够了(因此我可能会单击 5 次“取消”而不是“打开”一次,然后单击 3 次“取消”)并且任何重新启动应用程序的尝试但是“延迟”将导致新实例无法打开任何文件(甚至没有std::ifstream)。

一些细节:

  • 视觉工作室 2010
  • Windows 7 x64(但在 32 位 XP 上是一样的)
  • 对话框在单独的线程中启动
  • 我将 Allegro 5.0 用于图形,但这不应该相关
  • 该对话框由 GetOpenFileName 函数启动
4

1 回答 1

0

我不知道 RestartAPI,但您可以创建临时批处理文件,它将重新启动该过程而不会出现任何问题。

于 2013-04-18T23:30:50.030 回答