C# 如何使用sysinternalhandle识别代码中的哪个对象锁定了“Test File.pdf”文件

C# 如何使用sysinternalhandle识别代码中的哪个对象锁定了“Test File.pdf”文件,c#,process-explorer,C#,Process Explorer,我需要知道如何使用句柄来识别代码中的哪个对象锁定了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. a

我需要知道如何使用句柄来识别代码中的哪个对象锁定了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)
我处理了ReportDocument和SmtpClient对象,但这没有帮助,然后我尝试使用以下命令处理ProcessExplorer和命令行句柄

C:\Users\demouser\SysinternalsSuite> handle test\First Report for test.pdf
这也没有帮助。我再次检查了代码,并通过调用MailMessage的dispose方法解决了这个问题


因此,我想知道是否可以在第一个实例中使用handle来识别代码中的锁定对象。

对象不会对文件施加句柄;过程确实如此。我认为您无法找到代码中的对象转换为什么句柄。要么使用不带空格的文件名,要么将文件名用双引号括起来。。。。。使用ProcessExplorer的“查找/句柄”菜单可能更方便。@Axelkeper。当我在ProcessExplorer搜索中键入test.pdf的第一个报告时,它返回了0个匹配项。@Jeroenvanevel。因此,解决锁定问题的唯一方法是检查未处理的对象,这是我在最后做的。