dbから詳細を取得し、FileHelperを使用してファイルに書き込んでいます。ファイルをメールの一部として添付し、メールの送信後にファイルを削除しようとします。FileHelperアセンブリで作成されたファイルを削除できません
var engine = new FileHelperEngine<DataModel>();
engine.WriteFile(filePath, data);
//After Mail is sent, deleting the file.
if (File.Exists(filePath))
{
File.Delete(filePath); //Error is thrown here
}
例外:別のプロセスによって使用されているため、プロセスはファイル「..//somefilepath」 にアクセスすることはできません。
メールが送信されるとすぐにこれらのファイルを削除しなければなりません。これらのファイルをサーバーに置くと、サーバー内のスペースが消費されます。
別のプロセスでこれらのファイルを削除するにはどうすればよいですか?
編集:皆様からのお返事ありがとうございます。 ファイルを保持していて、ファイルを削除することを許可していないAttachmentインスタンスが原因で問題が発生していました。
MailMessage mailobj= new MailMessage();
Attachment data = new Attachment(filePath);
mailobj.Attachments.Add(data);
//after sending mail, i disposed the data
data.Dispose();
使用中のファイルは削除できません。 Windowsはそれを許可しません。私はあなたがそれを試してみる前に少しずつ遅らせて試してみることをお勧めします。 – Bart
_メールが送信されました_これは赤い旗を掲げています。このファイルを申し立てとして追加し、そのメール送信手続きの周りに_using文を使用していますか?メールを送信するコードを表示してください。 – Steve
すべてを適切に処分してください。あなたのコードはすべての使い捨てオブジェクトを処分しているわけではないと思います。 'データ'を処分している間はコレクションに追加済みで、サーバーオブジェクトにメールの送信を依頼すると添付ファイルオブジェクトではなくそのファイルが開きます。 – netniV