4

我有一个带有很多线程和很多复杂静态对象的大型应用程序。目前,当用户注销时,应用程序会重新启动以强制将应用程序重置为其初始状态。

此过程正在更改为 Windows 服务,因此这种方法不再可行。同样,代码太混乱了,无法正确实现在用户注销时重置状态的方法。

我在想可能有一种方法可以将整个进程的初始内存写入磁盘,然后在请求重置时加载它,但这有很多问题,例如无法保存内核模式状态。

我需要一种方法(无论多么肮脏)将此过程重置为其初始状态,而无需实际重新启动该过程。winapi 是否提供任何可以为我完成此任务的东西?

4

3 回答 3

3

没有什么可以阻止 Windows 服务在一个单独的进程中完成它的实际工作,尽管承认它有点混乱。所以我建议你有两个可执行文件:一个作为服务实现的父进程和一个子进程,当你需要重置应用程序的状态时,它可以退出(并由父进程重新启动)。

于 2012-05-11T04:26:12.907 回答
2

Windows 在这里帮不了你。您将不得不在自己的代码中解决问题,而不是寻找灵丹妙药。你说

代码太乱了,无法在用户注销时正确实现重置状态的方法。

您将不得不重新考虑这一点,因为这是您唯一的选择。

于 2012-05-10T21:35:51.897 回答
0

无需重写所有内容(您应该这样做),您只需将所有当前逻辑移动到工作线程中,然后服务可以在需要时生成、终止和重新生成该线程。服务进程本身将保持运行。

于 2012-05-10T21:56:04.370 回答