首页 > 慧问 > 频道

Aspose.Words手动代码处理图片减小Word大小时的错误问题[Aspose.Words for .NET]

发表于2019-05-10 回复:0 查看:2817  |  
目前文件中有文字及图片,图片估计接近1千5~2千左右,由于文档中一些图片是png等格式太大,为了减小word的大小,手动代码处理图片,将图片格式处理成jpg然后插入到word文档中并保存。出现错误如下: 检测到 ContextSwitchDeadlockMessage: CLR 无法从 COM 上下文 0x211df8 转换为 COM 上下文 0x211f68,这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 具体代码如下: <pre class='brush: csharp'> Document doc = new Document(@"E:\test\source.doc"); NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true, false); Aspose.Words.Drawing.Shape shape = null;<br> for (int i = 0; i < shapes.Count; i++) { shape = (Aspose.Words.Drawing.Shape)shapes[i]; if (shape.IsImage) { System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(shape.ImageData.ToStream());//这里偶尔出现内存溢出错误 bitmap.Save(tempFolder + "\\" + i + ".JPG", System.Drawing.Imaging.ImageFormat.Jpeg); System.GC.Collect(); } }</pre>
0个回答

打破零回复...

回复

登录 慧都网发表评论

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP