我正在使用Windows2005开发一个运行在DevStudio XP机器上的Windows2.0应用程序。在我的机器上,所有的自动更新都是最新的,发布版本运行正常。如果我在一台普通的XP SP2机器上运行应用程序(例如,新安装的没有更新的操作系统),它挂起时有99%的SP2使用率。它在应用程序将要加载一些基于语言(翻译文本)的程序集时挂起。在任何人说“获取所有更新”之前,我恐怕这不是一个选项,因为运行应用程序的机器通常不连接到互联网-它们是钞票分拣机,银行IT部门真的不喜欢在他们的机器上安装新代码。
那么,有没有人知道是什么原因导致.Net 2.0应用程序在一台XP电脑上工作正常,而在一台较旧的XP电脑上却无法正常工作?我猜可能是.Net框架的更新导致了这些问题,但我还没能找出不兼容的根源。
更新:
我已经设置了远程调试,并在进程挂起时停止了进程,调用堆栈顶部的函数是"ntdll.dll!_RtlCompareMemoryUlong@12() + 0x10字节“,它是由"RtlFreeHeapSlowly”调用的(不确定我为什么要缓慢地释放一些东西)。
另一个更新:
似乎构建挂起的应用程序的PC已经安装了Dev Studio SP1和一些安全更新。我的机器没有安装SP1,如果我构建它,应用程序在目标PC上工作得很好。我不认为这是.Net框架的问题,因为我已经更新了框架,而目标PC有一个新安装的框架。不幸的是,我们不能在目标PC上安装Dev Studio SP1,因为他们没有安装Dev Studio。有没有办法找出哪些依赖项需要更新?
发布于 2009-11-25 01:07:09
尝试将.NET 2.0 SP1 /SP2框架与您的应用程序一起安装(即,将更新的.NET框架安装程序与您的应用程序捆绑在一起)。这样,您就不需要依赖客户执行完整的Windows Update来运行您的应用程序。
发布于 2009-11-25 01:10:20
如果你能在它以99%的CPU使用率运行的时候访问机器,你可以从SysInternals使用ProcMon来查看它在哪里花费了所有的时间。
发布于 2009-11-25 01:15:09
“挂起”是否意味着它永久挂起,或者只是需要很长时间(您正在加载的每个程序集15秒)?如果后者和PC已连接到网络,但不能访问互联网,请尝试禁用internet Explorer选项中的“检查证书吊销”功能。如果这解决了问题,您可以要求该选项保持禁用状态,或者在应用程序配置中禁用generatePublisherEvidence
设置。
如果它永久挂起,那么这个答案不适用于您:)
https://stackoverflow.com/questions/1791458
复制相似问题