Handle を使用して、コード内のどのオブジェクトが pdf ファイルをロックしているかを特定する方法を知る必要があります。
バックグラウンドでクリスタルレポートを含むpdfファイルを生成し、pdfを受信者に電子メールで送信してから、ファイルを削除したかったのですが、このメッセージが表示され続けました
System.IO.IOException: The process cannot access the file 'c:\test\First Report for test.pdf' because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalDelete(String path, Boolean checkHost)
at System.IO.File.Delete(String path)
オブジェクトを破棄しましたが、それは役に立たなかったので、次のコマンドでProcessExplorerとコマンドラインハンドルを試しましReportDocumentたSmtpClient
C:\Users\demouser\SysinternalsSuite> handle test\First Report for test.pdf
それも助けにはなりませんでした。コードをもう一度調べて、dispose メソッドを呼び出して問題を解決しました。MailMessage
したがって、最初のインスタンスでハンドルを使用して、コード内のロック オブジェクトを識別できるかどうか疑問に思っています。