【问题标题】:C# Application Restart does not call program Main()C# 应用程序重启不调用程序 Main()
【发布时间】:2012-05-14 15:48:23
【问题描述】:

我已经编写了一个适用于用户群的应用程序。我正在寻找用于当前用户注销的最佳方式。所以我用了Application.Restart(); 很快我发现代码不能正常工作,Program.Main() 没有再次回调。 我想知道我的 登录表单加载方法 不会执行(登录表单正在从程序类调用)。

因此,如果您让我知道我的错误和正确的解决方案,我将非常感激。

【问题讨论】:

  • 你怎么知道 Main 没有被再次调用?
  • @jglouie 我在里面使用了断点
  • 您可能需要附加到生成的新进程
  • 在多线程应用程序中,断点仅适用于主线程 afaik
  • @ColeJohnson 你可以在其他线程中设置断点。

标签: c# winforms multithreading


【解决方案1】:

http://msdn.microsoft.com/en-us/library/system.windows.forms.application.restart.aspx

评论列出“VS2010 SP1 中的错误”

调用此方法后,应用程序不再在调试模式下运行,它不再由 IDE 生成,所有断点都停止运行。

编辑: 这就是像 log4net 这样的东西真正有用的地方。这是一个非常简单的库,可以添加到您的项目中,并且可以让您将调试信息写到文件中,因此,即使下一个实例不是由 IDE 生成并且不会获得断点,您仍然可以进行一些验证,以确保它达到了什么您期望通过使用调试跟踪。只是一个建议...

【讨论】:

  • 非常有帮助。 . .正如您所说,调试模式是主要问题。 . .谢谢你
【解决方案2】:

创建了一个新进程,它不是由 IDE 生成的。

断点不是测试Main是否再次输入的有效方法。

查看一些相关的帖子: Does Application.Restart() creates new process for application or no?

如果您愿意,您可以在 Main 中写入文件或其他一些简单的测试,以向自己证明它已被输入。

【讨论】:

    【解决方案3】:

    微软最近发布了一个解决方案,允许在Application.Restart() 之后继续调试,以 Power Tool 的形式:

    子进程调试电动工具

    【讨论】:

      猜你喜欢
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多