我正在编写一个使用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。
有谁知道问题是什么?我是否必须自己清除别的东西?或者是否有可能手动释放旧内存?
提前致谢!