0

Microsoft.Office.Interop.MailItemを使用して、電子メールから添付ファイルを削除し、ディスクに保存して印刷し、ディスクから削除しています。JPG添付ファイルの削除に問題があります。ファイルにロックがあるようですが、

これが各添付ファイルを保存するための私のコードです、

foreach (Attachment attachment in outLookMessage.Attachments)
{
    var fileNameOnDisk = FileNameOnDisk(printFileFolder, attachment.FileName);

    attachment.SaveAsFile(fileNameOnDisk);
}

JPGファイルがロックされている理由がわかりません。このログを解放してファイルを削除する方法はありますか?

4

2 に答える 2

3

attachment.Dispose()削除する前に使ってみます。

于 2013-03-26T12:35:46.620 に答える
0

最も可能性の高い原因は、ファイルがすでにそこに存在している(そして保持されている)か、アクションを実行する権限がないことです。最初のケースはほぼ確実です

ファイルが存在する場合、なぜそれを上書きするのですか?これはおそらくあなたがやりたいことではありません。ファイルが存在するかどうか、および必要に応じて名前を書き込んで変更する前に、ファイルがロックされているかどうかを確認することをお勧めします。 この質問の2番目の回答には、ファイルがロックされているかどうかを確認するためのコードが含まれています(具体的には、IOExceptionだけではありません)。

そして、質問へのクリスのコメント(素晴らしいアイデア、クリス)に関して、ファイルが存在し、ロックされており、長さが0の場合、FileNameOnDiskのあなた自身のせいである可能性があります。パスを返す場合は開いたものを閉じる(最良)か、共有読み取り/書き込みで開いてファイルストリームを返し、完了したら閉じます(最良ではありません)。

于 2013-03-26T12:45:27.300 に答える