【问题标题】:WinForms app shows black window + disappears on startupWinForms 应用程序显示黑色窗口 + 启动时消失
【发布时间】:2011-07-04 18:39:21
【问题描述】:

我使用 Visual Studio 2010 用 C# 编写了一个小型 WinForms 应用程序。

它在我的环境中运行良好,但我注意到我需要在安装了 .NET Framework 2.0 的 Windows Server 2003 SP2 服务器上的客户站点上运行该应用程序。

然后,我以 .NET Framework 2.0 作为目标框架构建了应用程序。该应用程序再次在我的计算机上运行良好。

在客户服务器上,我注意到一个奇怪的行为。启动应用程序后,黑色窗口会打开半秒钟,然后关闭。我没有收到错误消息。

我发现应用程序甚至没有进入主函数。

如何进一步调试和/或解决这个问题?

【问题讨论】:

  • 这是一个控制台应用程序吗?如果是这样,请运行命令提示符 (CMD) 并从那里执行应用程序。我希望控制台将捕获您的异常的详细信息。我的猜测是,尽管您现在的目标是 .NET 2.0,但您仍然在“bin”中为更高级别的 Fx 构建了一个程序集
  • 是否有任何有关崩溃的事件查看器数据?
  • 是的,使用调试器是个好主意。
  • 我将更改我的答案以使用 Win Form 应用程序。
  • 你试过像管理员一样运行它吗?

标签: .net winforms


【解决方案1】:

您需要做的是订阅两个事件:UnhandledException 和 AssemblyResolve。第一个是在......未处理的异常上触发的(当然)。第二个在 .NET 遇到无法解析的程序集引用时触发。其中一项或两项将帮助您在目标计算机上捕获错误。

 [STAThread]
    static void Main()
    {
        AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

    static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        string message = string.Format("Program encountered an unhandled Exception: {0}", e.ExceptionObject);
        MessageBox.Show(message);
    }

    static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
        string message = string.Format("Assembly cannot be located!: {0}", args.Name);
        MessageBox.Show(message);
        return null;
    }

您应该在代码的最开始就注册这两个事件处理程序,如图所示。

希望这会有所帮助!

【讨论】:

【解决方案2】:

应该有一个应用程序启动事件。我现在已经通过 Windows 编程多年了,但我记得 Application 有一些开始事件和结束事件之类的东西。您可以搜索这些事件,为它们创建处理程序,并在这些处理程序中尝试写入文本文件以跟踪您的应用程序。另外,如果您可以发布任何代码,那将很有用。

【讨论】:

  • 嗨。谢谢你的建议。
猜你喜欢
  • 1970-01-01
  • 2019-11-12
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多