2012-04-25 17 views
0

WPFで文書を印刷するコードのスニペットです。高レベルで、私はUserControlをインスタンス化し、それをプリンタに送信します。私が思ったんだけど何WPFでのユーザーコントロールと印刷の使用方法

 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

fixedDoc、fixedPage、pagecontent、およびcontrolToPrintがメソッドの最後にスコープから外れると仮定して、それらは自動的に破棄されます。アプリケーションのルーツがこれらのオブジェクトの参照を保持している場合、メモリリークが発生します。

+0

これは素晴らしいサウンドです。これらのアイテムはすべて、その1つのメソッドの一部としてのみ使用されるため、すべて設定されるように思えます。コードレビュー担当者がそうであることを知るために私が参照できるリンクがありますか? –

+0

参照の負荷がありますが、良いものがありますhttp://msdn.microsoft.com/en-us/library/ee787088.aspx –

+0

素晴らしい。再度、感謝します! –

関連する問題