C# 如果该文件通过递归方法存在并且在C中返回布尔值,请重试该文件三次

C# 如果该文件通过递归方法存在并且在C中返回布尔值,请重试该文件三次,c#,asp.net,.net,recursion,c#-4.0,C#,Asp.net,.net,Recursion,C# 4.0,我的要求是我希望我的文件被重试3次如果特定文件存在,我已经实现了,但问题是我希望通过返回布尔值的递归方法获得工作副本,下面是我的工作代码,它不返回布尔值: public void Process(int count = 0) { bool exists = File.Exists("C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\RevisionNumber.txt"); if (exists && c

我的要求是我希望我的文件被重试3次如果特定文件存在,我已经实现了,但问题是我希望通过返回布尔值的递归方法获得工作副本,下面是我的工作代码,它不返回布尔值:

public void Process(int count = 0)
    {
        bool exists = File.Exists("C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\RevisionNumber.txt");

        if (exists && count < 3)
        {
            System.Diagnostics.Process.Start("C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\SvnUninstallation.exe");
            Thread.Sleep(2000); // or long enough to ensure the uninstall process finishes executing

            //File exists
            Console.WriteLine("File exists");

            Process(++count);
        }
        else
        {
            Console.WriteLine("Exceeded retry of 3 times. File did not uninstall.");
        }

        if (!exists)
            Console.WriteLine("File uninstalled");

    }

有谁能帮我一个忙,通过递归方法提供解决方案,该方法返回布尔值,如果文件存在,请重试三次,如果不存在,则只执行一次。

我想您需要这样的解决方案:

public bool Process(int count = 0)
{
    if (File.Exists("C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\RevisionNumber.txt") && count < 3)
    {
        System.Diagnostics.Process.Start("C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\SvnUninstallation.exe");
        Thread.Sleep(2000); // or long enough to ensure the uninstall process finishes executing

        //File exists
        Console.WriteLine("File exists");

        if(Process(++count))
           return true;
    }
    if (!File.Exists("C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\RevisionNumber.txt"))
    {
        Console.WriteLine("File uninstalled");
        return true;
    }
    else
    {
        Console.WriteLine("Exceeded retry of 3 times. File did not uninstall.");
        return false;
    }
}

但是,在继续之前,您应该明确地等待启动的进程,不仅仅是通过大量的时间,而是通过进程。WaitForExit。

像C这样的命令式语言中的递归通常是一个坏主意,因为它可能会导致堆栈溢出。尝试使用for代替。好的,但要求是重试文件三次如果文件存在,如果不存在,则仅通过递归方法执行一次,返回布尔值。请澄清您想要什么?我不明白这个问题?您只想返回true或false?为什么它必须是递归的?而不是使用静态进程。启动并睡眠足够长的时间,以便它完成。您应该使用实例并调用。您可以按照将文件名设置为svnunstallation.exe的位置进行操作。我需要更多信息才能帮助您。为什么需要递归方法?Wy如果文件存在,请重试三次?如何在页面加载中调用此选项??