Multithreading 处置该线程并删除与该线程关联的文件

Multithreading 处置该线程并删除与该线程关联的文件,multithreading,dispose,Multithreading,Dispose,我想处理进程线程并删除与该线程关联的文件。因此,我能够处理线程,但在删除文件时,它仍然表示进程正在使用该文件 foreach (Match match in Regex.Matches(outputTool, matchPattern) { var prcInfo = Process.GetProcessById(int.Parse(match.Value)); var threadCollection = prcInfo.Threads; foreach (ProcessThrea

我想处理进程线程并删除与该线程关联的文件。因此,我能够处理线程,但在删除文件时,它仍然表示进程正在使用该文件

foreach (Match match in Regex.Matches(outputTool, matchPattern)
{
  var prcInfo = Process.GetProcessById(int.Parse(match.Value));
  var threadCollection = prcInfo.Threads;
  foreach (ProcessThread thread in threadCollection)
  {
    thread.Dispose();
  }                         
  File.Delete(filePaths[0]);
}

很可能是您未打开文件句柄。在尝试删除文件之前,请确保关闭文件并进行处理。

这是什么平台?文件锁定和线程语义是特定于平台的。代码格式化此问题似乎基于ProcessThread.Dispose()也将强制线程停止的假设。错误的假设,Process.Kill()将是必要的。Hans,问题是Process。Kill()将停止它,但现在该进程是我正在使用的系统中的主要进程,我不想杀死它。我只想扼杀这根线。我试过做process.kill(),它确实对我有用,我只是想弄清楚我们是否可以通过杀死进程使用的线程来删除文件。如何在c#中关闭句柄,我试过使用handle-一个文件名从命令提示符转储所有句柄信息,在这种情况下,它说找不到匹配的句柄。但在尝试处理线程并删除文件后,它仍然表示该文件已被另一个进程使用。