com服务器的回调很慢

时间:2013-01-25 15:55:20

标签: c# com callback com-interop

我正在使用.Net C#应用程序的本机COM服务器

除了从COM服务器到.Net应用程序的回调逐渐变慢之外,一切正常。服务器和.Net应用程序始终在同一台计算机上运行。

从.Net调用COM服务器总是很快。

奇怪的是,即使它们运行相同的二进制文件,它也不会在所有计算机上发生。

我在这个问题上花了很多时间。比较回调速度快的环境与速度慢但没有发现任何特殊情况的环境。

  • 回调开始很快,但随着时间的推移会逐渐变慢。
  • 如果将回调分配给.Net方法,则无关紧要。 (有一个服务器开关可以关闭所有回调。这就是我知道回调的问题)
  • 慢速计算机使用Window 7 64位,但在其他计算机上配置相同。
  • 同一域和网络上有慢速和快速的计算机
  • 无论用户是本地管理员还是标准用户
  • 都无关紧要
  • 我监控了磁盘/网络活动,但慢速和快速之间没有区别
  • 内存消耗没有明显差异
  • 从WinDbg看了一下CLR内存,但没有发现什么奇怪的

我注意到的一些事情:

  • 当回调很慢时,服务器进程使用100%CPU。
  • 查看带有进程资源管理器的调用堆栈,服务器大部分时间都位于其中一个RPC Ndr *函数中,即NdrClientCall2

我现在缺乏想法,需要一些帮助来解决这个问题。

0 个答案:

没有答案