zhanglaoshen 2021-05-09 14:43 采纳率: 66.7%
浏览 202
已结题

C#调用XpsDocument存储xps文档,内存如何释放?

var xpSfile = string.Format("{0}.xps",Guid.NewGuid().ToString());
            var paginator = ((IDocumentPaginatorSource)preview.Document).DocumentPaginator;
            using (var xpsDoc = new XpsDocument(xpSfile, FileAccess.ReadWrite, CompressionOption.Maximum))
            {
                using (var xpp = new XpsPackagingPolicy(xpsDoc))
                {
                    using (var rsm = new XpsSerializationManager(xpp, false))
                    {
                        rsm.SaveAsXaml(paginator);
                        rsm.Commit();
                        xpsDoc.Close();
                    }
                }
            }

1、生成一份xps文档增加2M内存,循环生成1000份,内存只增不减,无法释放

2、等到内存涨到1G左右,就会报错“打开文件“C:\WINDOWS\FONTS\SIMSUN.TTC”时 I/O 错误。”

3、网上说的 GC.Collect();SetProcessWorkingSetSize、EmptyWorkingSet都不好使

 

找到原因是WPF实例化后不会释放内存,不知道为什么,尽量少实例化WPF对象,

又发现新问题 PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, fileName, 0);占用内存极高,也是无法释放,还没解决

  • 写回答

4条回答 默认 最新

  • Don't move 2021-05-09 20:51
    关注

    using了的话问题应该不是出在这几个对象身上吧,确定是这一段代码的问题吗?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月18日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。