c#如何检查另一个进程正在使用的文件夹

c#如何检查另一个进程正在使用的文件夹,c#,.net,windows,file,io,C#,.net,Windows,File,Io,目前我正在开发我的应用程序自动更新功能。所以当我试图删除文件夹时,抛出另一个进程使用的异常。所以我计划检查文件夹是否被其他进程使用,我将跳过自动更新功能。如何检查另一进程正在使用的文件夹。我在使用以下代码时遇到异常: private static ArrayList getFileProcesses(string strFile) { myProcessArray.Clear(); Process[] processes = Process.GetProc

目前我正在开发我的应用程序自动更新功能。所以当我试图删除文件夹时,抛出另一个进程使用的异常。所以我计划检查文件夹是否被其他进程使用,我将跳过自动更新功能。如何检查另一进程正在使用的文件夹。我在使用以下代码时遇到异常:

private static ArrayList getFileProcesses(string strFile)
    {
        myProcessArray.Clear();
        Process[] processes = Process.GetProcesses();
        int i = 0;
        for (i = 0; i <= processes.GetUpperBound(0) - 1; i++)
        {
            myProcess = processes[i];
            //if (!myProcess.HasExited) //This will cause an "Access is denied" error
            if (myProcess.Threads.Count > 0)
            {
                try
                {
                    ProcessModuleCollection modules = myProcess.Modules;
                    int j = 0;
                    for (j = 0; j <= modules.Count - 1; j++)
                    {
                        if ((modules[j].FileName.ToLower().CompareTo(strFile.ToLower()) == 0))
                        {
                            myProcessArray.Add(myProcess);
                            break;
                            // TODO: might not be correct. Was : Exit For
                        }
                    }
                }
                catch (Exception exception)
                {
                    //MsgBox(("Error : " & exception.Message)) 
                }
            }
        }

        return myProcessArray;
    }
private static ArrayList getfileprocesss(字符串strFile)
{
myProcessArray.Clear();
Process[]processs=Process.getprocesss();
int i=0;
对于(i=0;i=0)
{
尝试
{
ProcessModuleCollection modules=myProcess.modules;
int j=0;

对于(j=0;j无法检查这一点,因为文件夹只不过是文件的集合。所以你应该检查文件夹中是否有任何文件正在使用。@HimBromBeere有一种方法,例如,你可以打开第一个文件,然后检查你能不能打开。@sem这不正是我在第二句中写的吗?检查它是否在美国是徒劳的se,在您检查它是否正在使用和实际要删除它之间的空白处,状态可能会更改。只需尝试删除它,捕获并专门处理它正在使用的IOException,并中止更新。@HimBromBeere,Windows允许进程锁定文件夹和文件。例如,您不能删除directo这是任何进程的当前目录。无法对此进行检查,因为文件夹只是文件的集合。因此,您应该检查文件夹中是否有任何文件正在使用。@HimBromBeere有一种方法,例如,您可以打开第一个文件,并检查您是否可以打开。@sem这不正是我在第二句中写的吗?I检查它是否正在使用是徒劳的,在检查它是否正在使用和实际要删除它之间的空白处,状态可能会改变。只需尝试删除它,捕获并专门处理正在使用的IOException并中止更新。@HimBromBeere,Windows允许进程锁定文件夹和文件。例如,您不能删除任何进程的当前目录。