gpt4 book ai didi

c# - 在 c#/.NET 中调试文件句柄问题

转载 作者:太空狗 更新时间:2023-10-29 21:41:01 24 4
gpt4 key购买 nike

我有一个程序可以依次访问 DLL。它以各种方式使用文件,创建它们,复制它们并将它们建立为 emailMessage 对象的附件。我有一个“文件正在使用”错误,阻止覆盖文件。

是否有任何工具或技术可以简化该过程 - 例如,在创建/删除包含特定字符串的句柄时发出某种警告?我查看了进程资源管理器、进程监视器(filemon 的后继者)等,但没有成功。

我可以继续寻找,但认为可能有比通过代码继续我的非正式调查更好的方法。

编辑

感谢您的评论。关于问题,结构有点复杂。我有我的“客户端”应用程序,它引用了一个“引擎”dll(也在 C# 中)。两者都是我自己的。客户端创建“附件”实例,每个附件都包含对各种文件的文件引用。其构造函数获取所引用的文件,并将副本放入临时文件夹中。稍后,一组“操作”构建电子邮件 - 它将每个附件作为“真实”附件添加到 EmailMessage 对象。有时我会处理对象并将它们的引用设置为 null,但如果我做得太早,那么我最终会遇到 null 引用异常。如果我做得太晚,那该死的东西就派上用场了!我确信我可以在适当的时候找到这个特定的错误,但它促使我想知道是否有一个有用的标准方法供知情人士使用。 :)

最佳答案

Procmon 会告诉您谁(即哪个进程)正在打开文件,以及打开它的位置的(非托管)堆栈。

在 C#/.NET 中,此问题的常见原因是人们打开文件流,但在使用完文件后没有进行处理。这意味着文件保持打开状态,直到(至少)下一次垃圾收集,这可能已经很久了。

关于c# - 在 c#/.NET 中调试文件句柄问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8934284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com