5

我有一个在本地运行良好的单元测试,但是当上传到 TeamCity 构建服务器时失败并显示“该进程无法访问该文件,因为它正被另一个进程使用。”

  1. 在我在测试中做任何事情之前,我会检查设置是否存在文件,如果存在,请尝试删除它。这失败并显示与上述相同的错误消息
  2. 在编写文件时,我关闭了编写器,然后将其处理掉,我认为这应该摆脱任何资源。

所以我有几个疑问

  1. 有没有人遇到过类似的问题并设法绕过它们
  2. 如何通过程序找出是什么进程自私地锁定了文件!!!

干杯

4

3 回答 3

4

Sysinternals handle.exe是第一步。或使用Process ExplorerFind Handle or DLL. 不过,杀死进程总是比关闭句柄更安全。

以编程方式,这是编写读取 Windows 句柄表的内核驱动程序的问题。

于 2008-11-20T16:11:15.290 回答
2

ProcessMon(用于查找)和Unlocker(至少用于解锁)也很有用。

于 2008-11-20T16:13:50.977 回答
1

Sysinternals FileMon提供了一些关于他们如何在旧 Windows 版本中完成此操作的信息(向下滚动)。

进程监视器是他们的最新版本,但它并没有提供很多关于他们如何做到这一点的线索。但是,那里链接了一些知识库文章,它们应该会引导您访问此信息。

-亚当

于 2008-11-20T16:19:36.893 回答