我正在从 MSTest(作为 STA 线程)启动 WPF 应用程序。 我在程序集初始化中启动应用程序并等待它完成加载。 当我手动关闭主要 window (从测试中打开)和当我在程序集清理(自动方式)中关闭它时,在程序集清理方法完成后,我总是得到COM object that has been sep ...
我正在从 MSTest(作为 STA 线程)启动 WPF 应用程序。 我在程序集初始化中启动应用程序并等待它完成加载。 当我手动关闭主要 window (从测试中打开)和当我在程序集清理(自动方式)中关闭它时,在程序集清理方法完成后,我总是得到COM object that has been sep ...
我面临一些奇怪的性能问题,我怀疑它们可能是由于将dynamic指定为 COM 接口方法的返回类型而引起的。 具体来说,这就是 IHTMLDOMChildrenCollection 接口在互操作中的结束方式: 我怀疑一旦我的代码调用item()方法,就会创建一些额外的接线,这会降低其他代码的性能。 ...
我正在尝试编写一个 Windbg 脚本,其中我在一个文件中有 1k 个地址。 对于每个地址,偏移量0x30处是 COM object。 我想从 COM object 中获取所有本机指针。 我知道如何手动操作,如下所示。 我在脚本中迭代它时遇到了麻烦。 从System.__ComObject , !d ...
我已经放入了以下方法,该方法从 XLS 文件单元格返回一个值: 当前代码显然会生成异常,因为我关闭了工作簿和应用程序,然后返回了该值。 添加方法是什么 仍然返回值? 谢谢。 ...
使用此代码,我打开 excel(使用 visible = false 因此用户看不到它),写入工作簿,然后在脚本结束后打开 excel(使其可见)或完全关闭它而不保存。 当我保存excel,保持打开状态,结束脚本,稍后手动关闭excel时,任务管理器中没有后台进程。 但是,当我用脚本关闭 excel ...
我有一个名为srxCOM.dll的titan-FTP dll,该dll是为VB6创建的。 我想在Visual Studio .NET中使用该dll,因此我使用tblimp创建了一个运行时可调用包装,并将其称为srxCOMnet.dll。 我已将dll作为参考添加到我的VS项目中,并且可以访问 ...
首先,这里使用的技术包括:Visual Studio、C#、Selenium WebDriver、Google Chrome 和 MS Excel。 我正在构建一个自动化框架来测试多个 Web 应用程序。 我正在使用 Excel 电子表格来提取可变数据,以便其他测试人员可以更轻松地使用测试。 在我 ...
我对.NET Native的工作方式很好奇。 通常,在托管代码中使用WinRT类时,它们是通过RCW调用的,由于托管代码和非托管代码之间的互操作会产生一些开销。 我想知道使用.NET Native编译托管代码时,理论上是否有相同的开销? ...
我将arcobjects地图事件挂接到vb.net表单上,以侦听地图选择更改。 一切正常,但是用户在打开表单时偶尔会报告此错误。 我看不到任何模式来重现该错误,而且似乎是随机的。 “无法使用与其基础RCW分离的COM对象” 它源自我钩住事件的表单Load()方法。 谁能帮助 ...
配置1:使用面向.NET 4.5.2框架的Visual Studio 2015为ArcMap 10.4构建ESRI加载项 配置2:使用面向.NET 3.5框架的Visual Studio 2013为ArcMap 10.3构建ESRI加载项 配置3:使用面向.NET 4.5.2 ...
我最近在异步代码中遇到了一个奇怪的错误。 我在COM控件上调用了一个阻塞方法,它似乎允许我的异步延迟在阻塞时运行。 考虑示例代码(仅用于说明目的) 在正常情况下,我希望以下输出: 我实际看到的是: 现在我没有COM控件的源代码,但我知道这是一个非常旧的C ++控件 ...
我正在围绕一组专有的COM对象编写C ++ / CLI RCW,以供C#应用程序使用,当我部署RCW和C#应用程序时,出现FileNotFound错误。 在此之后,我做了最简单的事情: 使用C ++ / CLI(VS2012)编写的.NET类库,没有代码添加到默认实现中。 AC ...
我对未及时收集RCW有问题 。 我想到从代码内部定期强制启动垃圾收集。 但是我不确定这是否会导致一些不希望的减速。 我实际上对收集所有对象不感兴趣,我只需要收集RCW,它们都具有System.__ComObject类型。 我想只收集它们会更快。 是否可以仅对某些类型的对象强制进 ...
当我要求Visual Studio为我的COM组件生成运行时可调用包装器时,它正在选择一种奇怪的类型来包装某些接口属性。 这是组件A的摘要类型库: 这是组件B的类型库: 这是Visual Studio为组件A生成的运行时可调用包装器: 这是Visual Studio ...
由于某些原因,我必须为商店提供的许多COM组件提供手动编写的运行时可调用包装器。 这是组件A的接口定义: 这是组件B的接口定义: 这是组件C的接口定义: 现在,以下测试程序以InvalidCastException终止: 为什么会这样呢? 编辑1:这是 ...
我遇到了一个问题,我认为这与CLR与COM对象的交互方式有关,但我希望这里的一些人可以提供更多的洞察力。 我想提前为这个问题的模糊性道歉,不幸的是我正在整合一个有些不透明的系统。 请考虑以下代码: COM互操作类型嵌入在我的程序集中,由另一个程序作为插件加载。 当我第一次创建F ...
我有一个COM组件,其中包含get_XXX和put_XXX方法。 我在.NET项目中使用了它,并为此生成了RCW。 我现在看到的是get_XXX和set_XXX方法,而不是put_XXX方法? 这是自动的还是在IDL中定义的? ...
我有一个非常大的项目,我不能轻易剥离。 当应用程序关闭时,出现错误 细节: 不幸的是,我看不到这是什么COM对象。 有人知道我怎么能找到答案吗? 不幸的是,我无法阅读ASM来分析反汇编。 ...
我正在使用COM interop在使用VS2012 / .NET 4.5 / Win8.1的非托管应用程序中创建托管插件。 所有的互操作似乎都没问题,但是当我关闭应用程序时,我得到了一个MDA异常,告诉我AV已经发生在释放COM对象时,RCW在Finalizing期间持有。 这是调用堆栈 ...
判断COM对象的引用计数是否达到0的一种方法是尝试访问其中一个成员并捕获生成的InvalidComObjectException,这不是很优雅,并且似乎不能很好地适应。 另一种方法是调用Marshal.ReleaseComObject并检查结果,但这需要将Com对象的引用计数减1。 有简 ...