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允许进程锁定文件夹和文件。例如,您不能删除任何进程的当前目录。