首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Application.Restart叶进程挂起

Application.Restart叶进程挂起
EN

Stack Overflow用户
提问于 2015-04-07 11:15:08
回答 2查看 549关注 0票数 1

当达到某个条件时,我的应用程序运行Application.Restart重新启动应用程序。这就留下了一个进程挂起,所以当应用程序恢复时,它会抱怨它已经在运行(我有代码来检查只允许应用程序的一个实例)。

可以通过调用Environment.Exit来消除此过程,但这与Application.Restart冲突。当重新启动被调用,然后是Environment.Exit时,重启将被中止,应用程序只是退出而不尝试重新启动。

我怎么才能避开这一切?

更多的信息:

我的主类实例化一个子类。如果满足某些条件,则此子类调用Application.Restart。这导致.Net调用主类上的FormClosed事件。此事件调用Environment.Exit以确保在用户退出应用程序时关闭所有进程,这将导致重新启动被中止。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-07 11:28:28

Environment.Exit(0)是内核32.dll中ExitProcess(0)的API等价物。它会立即终止这个过程。当主线程正在处理时,Application.ExitApplication.Restart都可以挂起。

对于您的情况,我建议使用Environment.Exit并在此之前启动一个新实例:

代码语言:javascript
复制
System.Diagnostics.Process.Start(Application.ExecutablePath);
Environment.Exit(0)

这将使绝对退出您的应用程序。

票数 1
EN

Stack Overflow用户

发布于 2015-04-07 11:27:37

根据猜测,代码中的某些内容会阻止应用程序在重新启动之前正确关闭,因此请确保检查您的代码(即FormClosed)。尝试使用可执行路径启动一个新进程,然后关闭原始进程。

代码语言:javascript
复制
System.Diagnostics.Process.Start(Application.ExecutablePath);
Application.Exit();

希望能帮上忙!

编辑:

Why is Application.Restart() not reliable?

这应该是有帮助的,所以可能是dup!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29490252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档