2

我有一个奇怪的问题:我的 Delphi 应用程序在 Application.CreateForm 调用启动后引发了 EOutOfRessources 异常。有人在那里,谁解决了这样的问题?

奇怪的是

  • 这只发生在单台机器上。我在其他电脑上没有这个问题
  • 如果远程服务处于活动状态(我们使用 Danware NetOP),应用程序运行正常。如果远程服务未运行(Netop 等待访客登录),应用程序将失败。

该应用程序是在 D7 下开发的;操作系统是 WinXP SP3。

谢谢你的帮助

--- 更新 1 ---

应用程序使用 EurekaLog 来捕获异常并存储错误信息。它说,EOutOfRessources 发生在 Application.CreateForm 上(已经创建了大约 50 个表单,还有一些其他表单等待创建),消息是“系统资源不足”。异常地址是 7C81EB2E。

EurekaLog 还提供了调用栈:

|*Exception Thread: ID=2088; Priority=0; Class=; [Main]                 |
|-----------------------------------------------------------------------|
|7C81EB2E|kernel32.dll|           |     |                       |       |
|77D56C4F|user32.dll  |           |     |CreateIcon             |       |
|7C9205D4|ntdll.dll   |           |     |RtlAllocateHeap        |       |
|7C9110ED|ntdll.dll   |           |     |RtlLeaveCriticalSection|       |
|77D2058E|user32.dll  |           |     |SystemParametersInfoA  |       |
|77D205A3|user32.dll  |           |     |SystemParametersInfoA  |       |
|7C809AE4|kernel32.dll|           |     |VirtualAllocEx         |       |
|7C809AA2|kernel32.dll|           |     |VirtualAllocEx         |       |
|7C809A94|kernel32.dll|           |     |VirtualAlloc           |       |
|0060E359|_765013.exe |_765013.dpr|     |                       |235[58]|
|7C91E64C|ntdll.dll   |           |     |NtSetInformationThread |       |
-------------------------------------------------------------------------

总内存使用量约为 60 MB;该应用程序有大约 20 MB 正在使用中。

我不知道使用的手柄数量;EurekaLog 不提供此功能。

--- 更新 2 ---

现在我们用另一台相同类型的PC交换了PC。异常没有再次引发。但是,我们在另一台机器上产生了类似的效果,现在无法在 Application.CreateForm 期间打开文件。文件名字符串是空的......在一些可怜的人重置(电源关闭)后问题消失了。

我们怀疑异常是由网络问题引起的。在这个客户,我们有四个应用程序正在运行(每个两个相同的项目)。他们通过公司网络共享数据;为此,有一个 NAS。网络登录是在 Windows 启动时完成的,大约在启动应用程序前 2 分钟。远程服务也在公司网络上运行。

现在的问题是,如果 Application.CreateForm 正在尝试连接到网络。我们的 OnCreate 事件处理程序不需要开放网络。应用程序的源代码也在 NAS 上(由 TrueCrypt 加密)。编译后,我们将 EXE 和所有其他需要的文件复制到本地硬盘驱动器并从该位置运行应用程序。通常,TrueCrypt 容器是关闭的。是否会发生,EXE 正在搜索 NAS 上的某些文件。TrueCrypt 容器?

也许,有人熟悉这些问题。谢谢你的帮助。

4

0 回答 0