我有一个在 windows10(64 位环境)上运行的 x86 应用程序。该应用程序的一个功能是生成大量报告,因此涉及大量打印。但是,我注意到每次我尝试在打印队列上调用 DefaultPrintTicket 时,dllhost 进程(COM Surrogate)都会在内存中增长。
我设法隔离了负责的代码并将其移至测试 WPF 应用程序。单击按钮时,将触发此代码:
var localPrintServer = new LocalPrintServer();
var oneNotePrintQueue = localPrintServer.GetPrintQueues().FirstOrDefault(p => p.Description.Contains(OneNote));
var printTicket = oneNotePrintQueue?.DefaultPrintTicket;
打印队列无关紧要,因为我尝试了所有这些并且问题仍然存在。我知道这可能与以下内容重复:PrintTicket DllHost.exe Memory Climbs
但是,那里提供的解决方案不起作用,因为 PrintTicked 不是 IDisposable 对象。我还尝试在注册表中进行一些调整(即找到 AppId AA0B85DA-FDDF-4272-8D1D-FF9B966D75B0 并删除“AccessPermission”、“LaunchPermission”和“RunAs”),但没有结果。
我无法将应用程序重建为 AnyCpu,并且我想避免创建单独的 64 位进程仅用于打印,因为很难将在一个应用程序中生成的报告发送到另一个应用程序。
非常感谢任何建议。