作者shockray (shockray)
看板C_Sharp
标题Re: [问题] MODI.Document 创建
时间Wed Nov 23 14:44:39 2011
Dear 各位前辈们:
小弟最近刚好有用到MODI
但一直被"MODI有时候无法release"的问题困扰很久
常常会因为这问题造成crash
就算用try catch包起来也是会crash
刚好有survey到板上这篇前辈写的文章
我在release的写法是:
modiDocument.Close(false);
if (modiDocument != null)
{
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(modiDocument);
modiDocument = null;
}
if (modiImage != null)
{
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(modiImage);
modiImage = null;
}
GC.Collect();
GC.WaitForPendingFinalizers();
但我用了之後, 在一直跑OCR的情况下
"有时候"一样会有下列的exception:
"Attempted to read or write protected memory.
This is often an indication that other memory is corrupt."
似乎还是没办法完全release?
可否请前辈们指点一下
感激不尽!
※ 引述《kewang (一切都不对了~)》之铭言:
: ※ 引述《kewang (一切都不对了~)》之铭言:
: : --
: : 杂七杂八的kewang部落格 http://kewang.tw
: : --
: : ◆ From: 118.167.130.202
: : → oooandooo:http://0rz.tw/p56hf 12/05 00:15
: : → oooandooo:我在网路上有查了一下,是MODI本身的问题 12/05 00:16
: : → oooandooo:这个网址有人写出方法把图片跟路径清空 12/05 00:17
: : → oooandooo:理面有提到他并没有完全解决这个问题 12/05 00:18
: 我找了其他的资料,不知道算不算解决这个问题。
: string result = string.Empty;
: MODI.Document modiDocument = new MODI.Document();
: modiDocument.Create(filename);
: MODI.Image modiImage = (MODI.Image)modiDocument.Images[0];
: modiImage.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_TRADITIONAL, false,
: false);
: foreach (MODI.Word word in modiImage.Layout.Words) {
: result += word.Text;
: }
: modiDocument.Close(false);
: modiImage = null;
: GC.Collect();
: return result;
: 记得要让modiImage变为null,然後再用GC强制执行回收机制,这样就可以了。
: 原po可以试试看喔。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.87.71.10
1F:推 kewang:我後来也有发现这个问题,短时间没解法 XDDDD 11/29 00:27