gpt4 book ai didi

c# - 检查 Application.Restart()

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:36 24 4
gpt4 key购买 nike

是否可以做类似下面的事情:

bool wasRestarted = ???;
main() {
if(wasRestarted) {
MessageBox.Show("Welcome Back John");
}
Application.Restart();
}

这专门针对 Application.Restart 而不是软关闭和重新打开。

我现在唯一能想到的方法是创建一个设置值:

  • 类型:整数
  • 默认:0

重新启动前将其设置为1,然后检查是否为1。

必须有比这更好的方法吗?

Selected Answer 完美无缺!像往常一样,感谢社区为我的大脑带来新功能:P

我用它来解决在另一个线程上的 Application.Restart 上释放 Mutex 的问题。由于 Mutex 是线程锁定的,我无法在重新启动之前在登录函数上释放互斥锁,导致 Restart 返回锁定的互斥锁并且无法继续。有了这个,我可以知道它是否重新启动,然后做一个简单的 while 延迟直到第一个“应用程序”实际关闭并且程序的 Main() 过早关闭导致 Mutex 被清除。然后 while() 将继续,现在我的应用程序正常运行!

显然,对于我的需求而言,这不是最理想的结果,但它确实有效,这就是我所能要求的。

最佳答案

您可以为此使用临时环境变量:

// Set environment variable before calling Restart
Environment.SetEnvironmentVariable("MYAPP_RESTART", "1");
Application.Restart();

// Detect restart:
var wasRestarted = Environment.GetEnvironmentVariable("MYAPP_RESTART");

if (wasRestarted == "1")
{
// Your app was restarted
Environment.SetEnvironmentVariable("MYAPP_RESTART", "0");
}

关于c# - 检查 Application.Restart(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50755277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com