【发布时间】:2018-06-08 16:17:49
【问题描述】:
是否可以执行以下操作:
bool wasRestarted = ???;
main() {
if(wasRestarted) {
MessageBox.Show("Welcome Back John");
}
Application.Restart();
}
这专门针对 Application.Restart 而不是软关闭和重新打开。
我现在唯一能想到的方法是创建一个设置值:
- 类型:int
- 默认值:0
重启前设置为1,然后检查是否为1。
一定有比这更好的方法吗?
选择的答案非常完美!像往常一样,感谢社区为我带来了一个新功能:P
我用它来解决在另一个线程上的 Application.Restart 上释放 Mutex 的方法。由于互斥锁是线程锁定的,因此在重新启动之前我无法在登录功能上释放互斥锁,导致重新启动返回锁定的互斥锁并且无法继续。有了这个,我可以知道它是否重新启动,然后延迟一段时间,直到第一个“应用程序”实际关闭并且程序的 Main() 过早关闭,导致互斥体被清除。然后 while() 将继续,现在我的应用程序可以正常工作了!
显然根据我的需要,这不是最理想的结果,但它确实有效,这就是我所能要求的。
【问题讨论】:
-
这是什么项目? WPF、WinForms、控制台或其他?
-
@Mike WinForms.
-
我认为如果你这样做,变量会被重置。
-
@BugFinder 我基本上想要它,首先启动布尔值总是错误的。然后,一旦我 application.restart() 它会在关闭并重新打开后将其 bool 设置为 true。