当我们中止在 Windows Slave 上运行的 Jenkins 作业构建之一,然后尝试重新触发时,新触发的构建失败并出现以下错误:
该进程无法访问该文件,因为该文件正在被另一个进程使用。
删除工作区时。
可能当构建作业被终止时,它生成的某些进程没有随之被终止,并且该进程正在保持打开的文件。
该进程通常会自行完成运行,当它完成时,文件上的锁定将被释放。
如果进程不会自行消失(例如,如果它打开了一个窗口,例如进程崩溃时看到的弹出窗口 - 并且您将无法看到此类窗口在 Jenkins 服务会话中运行)并且您可以访问从属计算机,您可以登录它并使用 SystemInternals 的 Process Explorer(可在 https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer 获取)等工具来查找并终止该进程。 ProcExp 是一个非常容易使用的工具,相当知名,并且非常适合这种情况。
如果您无权访问,您可能必须要求系统管理员重新启动从属设备 - 这很可能有点矫枉过正,但如果您无权访问从属设备,您必须寻求帮助的人可能没有太多时间来帮助您。帮助调试。
这个错误可能是由于性能问题而发生的,在这种情况下我们只需要使用类似的循环来避免这种情况,因为当前线程必须在被另一个进程访问之前关闭。
您可以使用给定的方法访问要通过邮件附加的文件,如下所示:
using(Attachment attpath = new Attachment(filepath))
{
//your code to access the attached filepath
mail.Attachment(attpath);
}