使用以下代码时:
Dim modiDocument As New MODI.Document
modiDocument.Create(TifFile)
modiDocument.Close(False)
然后TifFile没有被锁定,我可以做像删除它(IO.File.Delete)。
但是,当我枚举图像时,文件将被锁定:
Dim modiDocument As New MODI.Document
modiDocument.Create(TifFile)
For Each modiImage In modiDocument.Images
'Doesn't matter if I enter code here or not.
Next
modiDocument.Close(False)
现在文件将被锁定。
我尝试了一切(我认为)来解决这个问题,例如:
Dim modiDocument As New MODI.Document
modiDocument.Create(TifFile)
For Each modiImage In modiDocument.Images
Marshal.ReleaseComObject(modiImage)
Next
Marshal.ReleaseComObject(modiImage)
modiDocument.Close(False)
Marshal.ReleaseComObject(modiDocument)
是的,我也尝试过FinalReleaseComObject。
到目前为止,没有运气。
我该如何解决这个问题?
注意:这里的例子是VB。我也知道C#,所以你提供代码示例的语言并不重要。
答案 0 :(得分:1)
您需要释放您实例化的每个COM对象,并且很容易错过一个。例如。你错过了modiDocument.Images
。
以下内容可能有所帮助:
modiDocument.Create(TifFile)
var images = modiDocument.Images
For Each modiImage In images
...
Next
...
Marshal.ReleaseComObject(images)
如果在For Each循环中添加实例化其他COM对象的代码,则还需要清除它们。