我有一个由 RAD Studio 10.3.3 编译的 Delphi Windows64 应用程序,它有时会在调用 CheckSynchronize 后挂在主窗体的完成部分;在应用程序的真正结束时(后面没有调用任何内容)。
使用 Windows10 19.03 上的 ProcessExplorer,我可以验证 TMethodImplementationIntercept 和 gdiplus.dllGdiPlusStartup0x1c00 上的打开线程。
我没有实现任何自己的 Gdi 调用。Gdi 的集成似乎是由任何使用的组件或内部的 Delphi 功能引起的。
有没有办法本地化挂起 Gdi 线程的某些原因?
如果我在 CheckSynchronize 之后调用一些 ShowMessage,则应用程序终止得很好。就像在下面的例子中......
Untit MainForm;
....
initialization
finalization
CheckSynchronize;
TDialogService.ShowMessage('End');
end.
如果没有 ShowMessage,应用程序会挂在该线程上,但不是每次都挂起。如果我在没有 ShowMessage 的情况下以调试模式从 RAD Studio 调用应用程序,它也可以随时终止。
有什么帮助活动的想法吗?