【发布时间】:2014-06-25 13:32:34
【问题描述】:
我在我的应用程序中使用 System.Printing 库和 .net 框架 3.5。当我使用 PrintQueue.AddJob 在任何打印机上打印作业时,内存会增加并且不会释放它。仅当应用程序关闭时才会释放内存。 如果我打印超过 10 个作业,那么我的应用程序会使用我计算机的所有内存,最后一切都会变慢。 我观察到内存使用量达到 2GB,这是不可接受的。 经过调查,我发现调用 PrintqQueue.AddJob 方法时内存会增加。
这是我的打印示例代码:
PrintServer printServer = newPrintServer(@"\\sshinde");
PrintQueue PrintQ = newPrintQueue(printServer, "HP_Printer", PrintSystemDesiredAccess.AdministratePrinter);
PrintQ.AddJob("xyz", @"C:\ProgramData\MyComapny\PrintSoftware\Config\Print_Manager\INPUT\d7a8a71b-4e73-43ec-8ee9-bbe24b3ba2cb.xps", false);
【问题讨论】:
-
你试过打电话给
GC.Collect()吗? -
@golergka 如果可能,最好避免手动垃圾收集。 @Sagar
PrintQueue实现IDisposable吗? -
嗯,这只是一个了解发生了什么的建议。
-
在这种情况下,它不会有任何区别,因为如果 printqueue 上的 dispose 方法从未被调用,它的资源将不会被释放,即使手动强制垃圾回收 ;)跨度>
-
GC.Collect() 我试过了,但它没有释放内存
标签: c# .net system.printing .net-3.5