【发布时间】: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