我正在使用PrintTickets
打印大量WPF objects
并且一切正常。 我们确实有一种情况被报告,其中程序正在使用大量的dllhost.exe
内存并爬升直到计算机最终崩溃。 我将其范围缩小到创建PrintTicket
和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的内容永远不会消失。