首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查Application.Restart()

检查Application.Restart()
EN

Stack Overflow用户
提问于 2018-06-08 07:12:52
回答 4查看 1.2K关注 0票数 1

是否可以这样做:

代码语言:javascript
复制
bool wasRestarted = ???;
main() {
    if(wasRestarted) {
        MessageBox.Show("Welcome Back John");
    }
    Application.Restart();
}

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

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

  • 类型: int
  • 缺省值:0

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

一定有更好的办法吗?

选择答案工作完美!和往常一样,感谢社区给我的大脑带来了一个新特性:P

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

显然,对于我的需要,这不是最理想的结果,但它确实有效,这是我唯一可以要求的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-08 07:31:24

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

代码语言:javascript
复制
// 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");
}
票数 3
EN

Stack Overflow用户

发布于 2018-06-08 07:23:50

你能访问文件系统吗?如果是的话,编写一个保存退出状态的配置文件。如果退出通常保存为(例如) 0,则在重新启动时将保存为1,然后在启动时读取此文件。当第一次启动时,这个文件可能不存在(除非它是安装程序的一部分),所以假设0(如果不存在)。

如果您在Windows上,也可以使用注册表设置。这并不难。

票数 3
EN

Stack Overflow用户

发布于 2018-06-08 07:17:05

重新启动main时,可以将(命令行类似)参数传递给main。默认为0,因此默认情况下不显示“欢迎返回”框。

关于如何在重新启动之前更改参数,请检查Modify command line arguments before Application.Restart()

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

https://stackoverflow.com/questions/50755277

复制
相关文章

相似问题

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