【问题标题】:How can I catch the exception so it doesn't break?我怎样才能捕捉到异常,使其不会中断?
【发布时间】:2019-03-26 19:40:06
【问题描述】:

所以我正在尝试构建一个可执行文件。我正在运行的项目是在 X86 上构建的。

当我构建项目时,一切似乎都很好,并且我得到了一个可执行文件。但是可执行文件没有运行。我收到一条错误消息:

'child' 不是这个父级的子控件。

紧随其后,例外:

类未注册(HRESULT 异常:0X80040154 (REGDB_E_CLASSNOTREG)。

我确保一切都是 X86 并且我清理了解决方案并重建了。但我仍然得到这些错误。 (我尝试切换到 X64 和任何 PC,这些选项甚至无法找到我的 DeviceBase.dll) 当我开始调试时,它直接将我带到了代码的特定功能。

protected override void Call(bool calling)
{            
    if (calling)
    {
        if (components != null)
        {
            components.Call();
        }                    
    }

    //This is where I get the exception saying
    //cannot access a called object
    base.Call(calling);
}

堆栈跟踪给了我这样的东西:

Message=Cannot access a disposed object.
Object name: 'Icon'.
ObjectName=Icon
Source=System.Drawing

组件以 null 开始,调用最初为 false。 如何以适当的方式处理此异常?任何建议表示赞赏。

【问题讨论】:

  • 这里没有足够的信息来提供帮助。请包含minimal reproducible example
  • @Odrai 不确定这是否是由函数中的异常引起的。也许是我缺乏知识,但希望你能解释一下原因。
  • 请将项目平台目标设置为 x86。由于您在项目中使用的大部分 COM 都是基于 x86 构建的。项目属性-->构建-->目标平台-->x86。我认为“访问已处置的对象”错误是先前失败的结果。
  • @Odrai 问题:因为我在 X64 PC 上构建我的项目,所以我决定将所有内容切换到 X64(因为 x86 不起作用)。但现在我得到一个不同的错误,“无法加载文件或程序集'DeviceBase,Version = 3.2.0.1903,Culture = Neutral,PublicKeyToken = null'或其依赖项之一。尝试加载不正确的程序格式。”我检查了路径,一切正常,为什么会出现这个错误?

标签: c# visual-studio exception


【解决方案1】:

感谢大家的帮助。但我必须获取设备软件特定文件 (.dlls) 并将嵌入互操作类型设置为 false。那成功了。

【讨论】:

    猜你喜欢
    • 2010-12-29
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多