我正在编写一个使用 twain_32.dll 访问扫描仪和扫描文档的应用程序。它工作正常,但经过 100 - 150 次扫描后,我遇到了内存问题,必须关闭应用程序才能释放阻塞的内存。
我能够确定似乎出现问题的一点。
要访问扫描仪,我必须使用以下导入函数打开数据源:
<DllImport("twain_32.dll", EntryPoint:="#1")> Private Shared Function TwainOpenDatasource(<[In](), Out()> ByVal ApplicationIdentity As DataStructures.twIdentity, ByVal ZeroPointer As IntPtr, ByVal DataType As ITwain.DataGroup, ByVal Data As ITwain.DataArgumentTypes, ByVal Message As ITwain.Message, ByVal ScannerIdentity As DataStructures.twIdentity) As ITwain.ReturnCode
End Function
之后我关闭同一个数据源以释放内存
<DllImport("twain_32.dll", EntryPoint:="#1")> Private Shared Function TwainCloseDatasource(<[In](), Out()> ByVal ApplicationIdentity As DataStructures.twIdentity, ByVal ZeroPointer As IntPtr, ByVal DataType As ITwain.DataGroup, ByVal Data As ITwain.DataArgumentTypes, ByVal Message As ITwain.Message, ByVal ScannerIdentity As DataStructures.twIdentity) As ITwain.ReturnCode
End Function
问题是,在打开数据源后,应用程序分配了大约 1500k 内存,而在关闭时只释放了 1000k。
有谁知道问题是什么?我必须自己清除其他东西吗?或者有没有可能手动释放旧内存?
提前致谢!