シナリオ:ファイルシステムにダンプされた.msgファイルのリストを開くアプリケーションを作成しました。そこからいくつかの情報(件名、To CC)を入力して移動します。ファイルを移動できません:プロセスが別のプロセスで使用されているため、ファイルにアクセスできません。
問題:それはファイルの移動に来るときしかし、私は次のエラーを取得する:
The process cannot access the file because it is being used by another process.
は、ファイルに対するハンドルを実行するだけで、私が書いたツールなし他のハンドルを示します。
私はRedemption MessageItemオブジェクトとして使用し終えると、ファイルを適切にリリースしないと思います。
しかし、IDisposableを実装していないため、usingステートメントでそれらを囲むことはできません。そして彼らは公開されたクローズやディスポーザー、あるいは同様の名前のメソッドを公開していません。要するに
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);
コードなしで、どうやってお手伝いできると思いますか? –
コードを追加しました – Richard
MAPIUtilsClassクラスはIDisposableを実装していますか?もしそうなら、その吸盤を使用して包み、それがあなたの問題を世話するべきです。 –