我PrintTickets
用来打印大量的WPF objects
东西,打印效果很好。我们确实有一种情况,据报道,程序正在使用大量dllhost.exe
内存并不断攀升,直到机器最终崩溃。我已将其范围缩小到创建 aPrintTicket
和printqueue.getprintcapabilitiesasxml()
. 每次调用它们时,它都会使dllhost.exe
每次的内存使用量增加 3+ MB。谁能告诉我如果可能的话如何避免这种情况,或者在我知道它被使用后是否有办法清除它?
更新:我用简单的代码创建了一个项目。
for (int i = 0; i < 100; i++)
{
using (System.Printing.PrintQueue pQueuePrnt =
new LocalPrintServer().GetPrintQueue("HP LaserJet 9050 PCL 5"))
{
using (MemoryStream printerCapXmlStream = pQueuePrnt.GetPrintCapabilitiesAsXml())
{
Console.WriteLine(printerCapXmlStream.Length);
}
}
}
这将导致dllhost.exe
永远不会消失的近 60 MB。