- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我长期以来一直是 stackoverflow 的被动用户,发现了很多有用的信息,但这是我在这里的第一个问题。恐怕我的第一个问题有点含糊,因为我没有展示代码,而是描述问题。我不是在寻找直接的解决方案,而是在寻找有关进一步阅读的一些提示,这些提示将使我能够理解我的问题的原因。
我的问题是关于 C# WPF 应用程序 (.NET 4.0),它使用 TPL 对进程外 COM 服务器进行并行调用。进程外 COM 服务器是机械工程中使用的一个相当昂贵的商业应用程序——我们称它为 MechEngApp。 COM 服务器是 64 位可执行文件。我的 C# WPF 应用程序是一个交互式程序,用于自动执行 MechEngApp 中的某些计算。它连接到 MechEngApp,从中读取一些输入,自行进行一些计算并将结果写回 MechEngApp。我们目前正准备切换到新版本的 MechEngApp。虽然在版本 X 中一切正常,但我们在新版本 Y 中遇到了一个奇怪的问题。
我的 C# WPF 应用程序是这样工作的:
使用 MechEngApp 的当前版本 X,这已经工作多年没有任何问题。在 MechEngApp 的新版本 Y 中,我们在某个配置中遇到了问题:
之后我们开始调查,发现 MechEngApp 的 TypeLibs 只有 win32 的注册表项 (HKCR\TypeLib, HKCR\Wow6432Node\TypeLib, HKLM\SOFTWARE\Classes\TypeLib, HKLM\SOFTWARE\Classes\Wow6432Node\类型库)。我们试图将它们复制为 win64 条目,但突然就没有了。 3 也有效。
所以我有一个解决我的问题的方法,但我不明白为什么以及它是如何工作的。这几周看了很多书,增长了进程外COM的使用知识,但还是不能回答一些问题:
A) 对于进程外 COM,混合 32 位和 64 位客户端和服务器并不重要,不是吗?
B) 我读过,对于进程内 COM,ThreadingModel 很重要,但对于进程外,它应该无关紧要。对吧?
C) 注册表中的 win64 TypeLib 条目何时重要?仅当 COM 服务器为 32 位和 64 位客户端提供不同的类型库时?
D) 当 win64 条目存在时,进程间通信有什么不同?为什么我的情况没有。 3 当 win64 条目存在时表现不同?
E) 与 D 相关:为什么将我的 C# 应用构建为 32 位或 64 位程序会影响进程外 COM 服务器的行为?
F) 我们使用多年没有任何问题的 MechEngApp 版本 X 也是一个没有 win64 条目的 64 位应用程序。如果 win64 条目很重要,为什么它在过去起作用?
最佳答案
A) For out-of-process COM mixing 32 and 64 bit clients and servers shouldn't really matter, should it?
COM 会处理这个问题,但拥有匹配的位数总是好的。
B), C), E), F)
见下文。
D) What's the difference in the inter process communication, when the win64 entries exist? Why is my case no. 3 behaving different when the win64 entries exist?
我们不确定第 3 方进程外服务器进程内部发生了什么(例如,它是否使用具有多个线程、单个 STA 线程或多个 STA 线程的 MTA 单元),所以我只能推测。
就是说,我想在您在客户端引入并发之前,内部 MechEngApp
COM 服务器进程没有跨线程 COM 编码。一旦你这样做了,你可能还在 MechEngApp
进程中引入了多线程。显然,MechEngApp
依赖于 COM typelib 编码器,当它在自己的线程之间编码 COM 对象时(例如,使用 CoMarshalInterface
)。这将是进程内编码,因为它发生在 MechEngApp
进程内。为使其正常工作,必须为 64 位应用程序提供正确的 64 位注册表项。
您可能还可以通过以管理员权限运行 MechEngApp.exe/RegServer
来使其工作。
关于c# - 使用 TPL 和进程外 COM 服务器的 C# WPF 应用程序的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23239995/
我试图弄清楚如何为聊天气泡制作外 Angular 圆形设计,以获得所需的结果: 我必须使用气泡作为不同背景的组件,没有相同和纯色,但有一些设计元素,所以气泡周围的空间必须是透明的: 我试过将元素添加为
我尝试了 display:table-cell 但它没有用。我怎样才能在div中显示这个词。现在它显示溢出了 div。我在我的网页上使用 CSS2。提前致谢。 Visit W3Schools
我有一个使用 CSS 隐藏在 View (对于移动设备)之外的菜单: #filter-column { position:absolute; left:-400px; } 当用户单击链
我想创建一个这样的问题行 http://imageshack.us/photo/my-images/200/questionh.png/ 此时我的html源是: question label
我要mock a class with Ruby . 如何编写处理样板代码的方法? 以下代码: module Mailgun end module Acani def self.mock_mail
请不要担心循环,但我的问题是关于这些关键字:outer、middle 和 inner。它们不是声明为实例变量,为什么IDE让代码编译?我在谷歌上搜索了一下,这是java标签吗? Java中的某种关键字
我有一个数据框(df),看起来像, Id Name Activity. 1 ABC a;sldkj kkkdk 2 two
Elasticsearch内存中有哪些东西可以使搜索如此快速? 是所有json本身都在内存中,还是仅倒排索引和映射将在内存中24 * 7? 最佳答案 这是一个很好的问题,然后简而言之就是: 不仅仅是数
我正在尝试添加用户在用户界面上选择的值。对于数据库中的特定列,我已经与数据库建立了连接,当我按“保存”时,新的 id 会添加到数据库中,控制台中不会显示任何错误,但我要提交的值不会放入数据库,我怎样才
我不确定这个问题是否应该涉及电子领域,但由于它是关于编程的,所以我在这里问了它。 我正在制作一个数字时钟,使用由移位寄存器供电的 LED,而不是 7 段显示器。无论如何,当使用 CCS 编译代码时,我
我希望用户在 div 中选择文本 (html)。然而,这样做会在浏览器中显示选择背景,也在 div 之外。 我可以用(参见 http://jsfiddle.net/lborgman/aWbgT/)来防
我有以下 Razor View @{ ViewBag.Title = "UserCost"; }
我使用 KineticJS 和 D3.js 制作了以下内容。当用户将鼠标悬停在其中一个点上时,我使用 KineticJS 让我弹出工具提示。但是,由于 Canvas 的边界,工具提示似乎被切断了。有没
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
我正在使用 primefaces 学习 Java Web 和 jsf。 我的项目当前只有一个index.xhtml 文件,当我访问localhost:8080/appname/时,index.xhtm
我是 ios 新手。 我有一个 View ,其中我使用 Quarts 核心绘制了一个圆圈。 我在该圆圈中放置了一个 UIButton,并赋予了拖放该按钮的功能。 现在我想要限制按钮不能被拖出那个圆圈区
这个问题已经有答案了: How to add two strings as if they were numbers? [duplicate] (20 个回答) How to force JS to
我正在创建简单的文本从右侧滑动到页面的 css 动画。我正在使用 jQuery 通过向元素添加一个类来触发动画。但是起始位置必须在视口(viewport)之外,这会触发底部滚动条出现。如何预防? 这是
我编写了一个简单的代码来评估一段代码并将输出写入文件。这样它减少了我的一些,因为我需要很多很多文件,每一行都包含返回值! 无论如何,我正在使用的代码是: #!/usr/bin/ruby -w def
所以我试图在我的一款游戏中加入一个非常基本的“手电筒”式的东西。 我让它工作的方式是在我的游戏屏幕顶部有一个层,这个层会绘制一个黑色矩形,不透明度约为 80%,在我的游戏场景顶部创建黑暗的外观。 cc
我是一名优秀的程序员,十分优秀!