C# 如何定义哪个进程使用了另一个进程使用的文件(文件除外)

C# 如何定义哪个进程使用了另一个进程使用的文件(文件除外),c#,file,exception,process,C#,File,Exception,Process,我试图找出哪个进程导致另一个进程使用该文件时出现异常。所以我要做的唯一检查是,如果我找到了这个进程,这个代码不会向我显示“另一个进程使用的文件!” 异常将程序抛出错误的地方是写入文件 using (StreamWriter sw = File.AppendText(doc.txt)) sw.WriteLine(text); 所以我所做的,首先,我找到了所有对该文件的请求,以确保该文件已关闭sw.Close(): 同样适用于: using (StreamReader sr = ne

我试图找出哪个进程导致另一个进程使用该文件时出现异常。所以我要做的唯一检查是,如果我找到了这个进程,这个代码不会向我显示“另一个进程使用的文件!”

异常将程序抛出错误的地方是写入文件

 using (StreamWriter sw = File.AppendText(doc.txt)) 
     sw.WriteLine(text);
所以我所做的,首先,我找到了所有对该文件的请求,以确保该文件已关闭
sw.Close()

同样适用于:

using (StreamReader sr = new StreamReader(doc.txt))
{
   // some code
   sr.Close();
}
我也有,我不知道如果我也需要关闭它怎么办:

 File.WriteAllText(doc.txt, text);
以及:

但没有任何帮助

如何知道哪个进程使用了该文件,或者如何停止它

我不想问如何避免或预防它,因为它总是使用,所以有不断的异常风险


如果操作正确,除了给定的尝试之外,还有什么会导致此问题

我认为当您使用
时,不必显式地关闭文件。这当然是可能的,因为可以枚举进程打开的所有句柄(包括文件)。e、 g.就是这么做的。因此,或许可以枚举所有打开的进程,然后枚举每个进程的句柄。你在不同的线程中运行它们吗?@Prajwal你好,我有全部功能:使用(StreamWriter sw=File.AppendText(doc.txt))sw.WriteLine(text);然后我停止使用,但结果是一样的。文件正在使用中,我不知道原因是什么,上面显示了很多这样的请求,但在编写异常位置时,没有人不能处于活动状态,但事实是它正在处理中。
using (StreamReader sr = new StreamReader(doc.txt))
{
   // some code
   sr.Close();
}
 File.WriteAllText(doc.txt, text);
 if (File.Exists(doc.txt)) 
         wordsTyped.AddRange(File.ReadAllLines(doc.txt));