これは、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
。ここでメモリの問題が発生するのでしょうか、それとも何らかの方法で自動的に破棄されるのでしょうか? それらが自動的に破棄されない場合、どうすればそのメモリを解放できますか?