使用UserControls的WPF内存使用情况&印花

时间:2012-04-25 14:02:02

标签: wpf memory user-controls

这是我在WPF中打印文档的代码片段。在高级别,我实例化UserControl,然后将其发送到打印机。

        var printQueue = GetQueues().Where(t => t.Name == comboBox1.SelectedItem.ToString()).FirstOrDefault();
        var defaultPrintTicket = printQueue.DefaultPrintTicket.Clone();
        var newTicket = ModifyPrintTicket(defaultPrintTicket, "psk:JobInputBin",
                                          ((PrintTrays)listBox1.SelectedItem).ConfigValue);

        var xpsWriter = PrintQueue.CreateXpsDocumentWriter(printQueue);

        var controlToPrint = new PackingSlip();
        var fixedDoc = new FixedDocument();
        var pageContent = new PageContent();
        var fixedPage = new FixedPage();

        fixedPage.Children.Add(controlToPrint);
        ((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
        fixedDoc.Pages.Add(pageContent);
        xpsWriter.Write(fixedDoc, newTicket); 

我想知道的是,随着时间的推移,我将创建数百个controlToPrint的实例。我会在这里遇到内存问题,还是会以某种方式自动处理?如果它们没有自动处理,我将如何释放内存?

1 个答案:

答案 0 :(得分:1)

假设fixedDoc,fixedPage,pagecontent和controlToPrint在方法结束时超出范围,它们将被自动处理。如果应用程序根保留对任何这些对象的任何引用,那么您将获得内存泄漏