シナリオ:.msgファイル(ファイルシステムにダンプされている)のリストを開き、それらからいくつかの情報(subject、To CC)を取得して、それらを移動するアプリケーションを作成しました。
問題:ただし、ファイルの移動に関しては、次のエラーが発生します。
別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。
ファイルに対してHandleを実行すると、私が作成したツールのみが表示され、他のハンドルは表示されません。
したがって、Redemption MessageItemオブジェクトとしての使用を終了したときに、ファイルを適切に解放していないと思います。
ただし、IDisposableを実装していないため、usingステートメントでラップすることはできません。また、パブリックのCloseやDispose、または同様の名前のメソッドは公開されません。
要するに、私は尋ねようとしています:
a)ファイルハンドルへのパスのみを知っている状態で、c#アプリケーションに特定のハンドルを強制的に閉じるにはどうすればよいですか?
または
b)償還オブジェクトを強制的に閉じる方法はありますか?
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);