场景:我编写了一个应用程序来打开.msg文件列表(已转储到文件系统),抓取从他们的一些信息(主题,到CC),然后移动它们。无法移动文件:进程无法访问该文件,因为它正在被另一个进程使用
问题:然而,当涉及到移动我得到以下错误文件:
The process cannot access the file because it is being used by another process.
运行处理有关文件只显示我写的工具,并没有其他的手柄。
因此,我假设我在完成将它们用作Redemption MessageItem对象时没有正确地释放这些文件。
但是我无法将它们包装在using语句中,因为它们没有实现IDisposable。而且他们不公开任何公开的关闭或处置或类似命名的方法。
总之,我试图问:
一)我怎么能强迫我的C#应用程序关闭一个给定的手柄,只知道路径文件句柄?
或者
二)有没有办法来强制赎回对象关闭?
var util = new MAPIUtilsClass();
MessageItem item = util.GetItemFromMsgFile(EmailPath, false);
item.Import(EmailPath, 3);
Subject = item.Subject;
From = (item.SenderName.Length < 96) ? item.SenderName : item.SenderName.Substring(0, 93) + "...";
To = (String.IsNullOrEmpty(item.To)) ? String.Empty : (item.To.Length < 96) ? item.To : item.To.Substring(0, 93) + "...";
CC = (String.IsNullOrEmpty(item.CC)) ? String.Empty : (item.CC.Length < 96) ? item.CC : item.CC.Substring(0, 93) + "...";
Sent = item.SentOn;
Received = item.ReceivedTime;
Log.Write("Redemption: Email data harvested" + EmailPath);
没有代码,你觉得我们可以帮你吗?! –
刚刚添加的代码 – Richard
MAPIUtilsClass类是否实现IDisposable?如果是这样,将该吸盘包装在一个使用中,并应该照顾你的问题。 –