C# 创建固定文档会导致内存泄漏

C# 创建固定文档会导致内存泄漏,c#,wpf,memory-leaks,fixeddocument,C#,Wpf,Memory Leaks,Fixeddocument,我在应用程序中创建WPF报告,我发现,每次创建报告时,报告都会保留在内存中。我完全删除了文档内容,只打印了一个空的UserControl。我将代码减少到最低限度,但仍在泄漏。你知道我做错了什么吗?或者我没有做什么 分析表明问题在于ContextLayoutManager在ContextLayoutManager.LayoutQueue.Request中的FixedPage上保留引用 private AutoResetEvent _documentGenerated = new AutoR

我在应用程序中创建WPF报告,我发现,每次创建报告时,报告都会保留在内存中。我完全删除了文档内容,只打印了一个空的UserControl。我将代码减少到最低限度,但仍在泄漏。你知道我做错了什么吗?或者我没有做什么

分析表明问题在于ContextLayoutManager在ContextLayoutManager.LayoutQueue.Request中的FixedPage上保留引用

    private AutoResetEvent _documentGenerated = new AutoResetEvent(false);
    private Stream _outputStream;
    private void button1_Click(object sender, RoutedEventArgs e)
    {
        using (_outputStream = new FileStream(@"c:\report_tst.xps", FileMode.Create))
        {
            Thread thread = new Thread(new ThreadStart(doWork));
            thread.Name = "Report generating thread";
            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();

            _documentGenerated.WaitOne();
        }
    }

    private void doWork()
    {
        FixedDocument fixedDoc = new FixedDocument();
        PageContent pageContent = new PageContent();
        FixedPage fixedPage = new FixedPage();
        fixedPage.Children.Add(new UserControl());
        ((IAddChild)pageContent).AddChild(fixedPage);
        fixedDoc.Pages.Add(pageContent);

        var package = Package.Open(_outputStream, FileMode.Create);
        var xpsDoc = new XpsDocument(package, CompressionOption.Normal);
        XpsDocumentWriter xpsWriter = XpsDocument.CreateXpsDocumentWriter(xpsDoc);

        xpsWriter.Write(((IDocumentPaginatorSource)fixedDoc).DocumentPaginator);

        xpsDoc.Close();
        package.Close();

        _documentGenerated.Set();
    }
谢谢你的建议