【问题标题】:On Windows 2008 application crashes instead of handling the exception在 Windows 2008 应用程序崩溃而不是处理异常
【发布时间】:2013-09-09 11:32:37
【问题描述】:

我有一个功能应该检查 COM 是否已在系统中注册。可能会发生,COM 已注册,但缺少 dll 文件 - 在这种情况下,函数也应该返回 false。 MessageBox 仅用于调试目的:

public bool IsCOMInstalled(string name)
{
    try
    {
        MessageBox.Show("?");
        var obj = Activator.CreateInstance(Type.GetTypeFromProgID(name));
        MessageBox.Show("!");
        return true;
    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message);
        return false;
    }
}

在 Windows XP 和 7 以上版本上运行良好。在 Windows Server 2008 上,不处理异常。应用程序在显示“?”后立即崩溃。

这是为什么呢?如何让我的应用程序处理异常...?

【问题讨论】:

  • 我相信我们需要那个name
  • 嗯,它是 TestDll.TestTools。我看不出这会有什么帮助。
  • 听起来你在初始化时在 TestDLL.TestTools 中有一个错误。如果有什么东西导致进程崩溃,那不是你能捕捉到的。
  • 此外,这些 ExecutionEngineException、StackOverflowException 和 OutOfMemoryException 不会被捕获块捕获,您的应用程序只会死掉。但由于您正在进行 COM 调用,请首先检查是否缺少本机 DLL。

标签: c# com windows-server-2008


【解决方案1】:

我认为这是您的 windows 框架的问题。

当框架无法处理异常时,CLR 无法进一步运行。意味着您的代码完全破坏了 CLR 的功能。

检查以下链接注释中维护的 Windows 8 的系统要求。 我找到了运行 Windows 8 的系统要求。 http://msdn.microsoft.com/en-us/library/8z6watww.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多