【问题标题】:Why I can't close my windows form?为什么我不能关闭我的窗体?
【发布时间】:2014-02-21 06:36:24
【问题描述】:

我试图关闭在 Windows CE 6.0 设备上运行的应用程序。 我尝试了以下代码。

        System.Diagnostics.Process.Start("ShutDown", "/r");//to restart
        Process.Start("shutdown.exe", "-s");

        Application.Exit();

        System.Windows.Forms.Application.Exit();

        Process procs = Process.GetCurrentProcess();
        procs.Kill();

        this.Close();

以上所有代码在调试时都在工作,应用程序在执行Application.Exit(); 时关闭。但是当我将代码编译成 autorun.exe(可执行文件)并运行时,屏幕在执行同一行时冻结。

请在这个问题上指导我。

  public Form1()
    {
        int i = AddFontResource("\\Flash Disk\\Arial Unicode MS.TTF");
        int c = AddFontResource("\\Flash Disk\\Devanagari_new.TTF");
        int d = AddFontResource("\\Flash Disk\\Mangal.TTF");
        InitializeComponent();
    }

【问题讨论】:

  • 您能否向我们展示您如何实例化您的主表单以及您可能使用的任何其他表单。它可能让我们了解导致挂起的原因。另外,您能告诉我们您使用的是什么 .NET 框架吗?我可以想到几个错误和内存泄漏问题,但我需要更多信息。
  • @Noobacode 我只使用一种表单来处理多个屏幕活动。
  • 您能否分享该表单的实例化代码并告诉我您使用的是什么 .NET 框架?您是否正在设置字体?
  • @Noobacode 查看我编辑的答案

标签: c# winforms windows-ce


【解决方案1】:

如果您在设置中设置字体,有一个已知错误会导致挂起。注释掉你的字体设置代码,看看它是否正常运行和关闭。如果是这样,那就是字体设置的错误。顺便说一句,确保您的目标系统有字体……这可能是问题之一。

获取Debugger 并使用它来分析导致关机期间挂起的原因。使用起来相当简单。或者这个Debugger。我不知道你的完整设置。

如果您不确定,this article 将是您开始调试的一个很好的指南。

另外,如果您还没有这样做,请将您的代码包装到__try{}__except{}。可能存在内存泄漏,但在我们从其中一个来源看到一些信息之前我们不会知道。

【讨论】:

  • @user2865487 所有字体设置代码都被注释掉了?
  • @user2865487 查看我的回答,了解一些提示。
  • @user2865487 好吧,从您的原始帖子中看起来不像。除了this.Close(),其他一切都会导致应用程序关闭。
  • 当我点击按钮时,你能告诉我如何重启应用吗?
  • @user2865487 你必须为它设置CeRunAppAtTime(可能需要15-20秒)然后关闭它。参考:msdn.microsoft.com/en-us/library/ms913957.aspx 所以,你基本上是在安排操作系统在某个时间启动你的应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 2022-11-25
  • 2011-07-26
相关资源
最近更新 更多