Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果文件存在于c#中,请通过递归方法重试三次_C#_Asp.net_.net_Asp.net Mvc_C# 4.0 - Fatal编程技术网

如果文件存在于c#中,请通过递归方法重试三次

如果文件存在于c#中,请通过递归方法重试三次,c#,asp.net,.net,asp.net-mvc,c#-4.0,C#,Asp.net,.net,Asp.net Mvc,C# 4.0,有人能通过递归方法提供解决方案来帮助我吗 我的要求是我想要一个递归方法,需要运行以下代码三次: 下面是我的C#工作代码: public void Process() { bool exists = File.Exists("C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\RevisionNumber.txt"); for(int i = 0; i < 3 && exists; i++) {

有人能通过递归方法提供解决方案来帮助我吗

我的要求是我想要一个递归方法,需要运行以下代码三次:

下面是我的C#工作代码:

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

     for(int i = 0; i < 3 && exists; i++)
     {    
         System.Diagnostics.Process.Start("C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\SvnUninstallation.exe");
         Sleep(2000); // or long enough to ensure the uninstall process finishes executing
         exists = File.Exists("C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\RevisionNumber.txt");             
     }
     Console.WriteLine(exists);
     Console.ReadLine();

 }
公共作废流程()
{
bool exists=File.exists(“C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\RevisionNumber.txt”);
对于(int i=0;i<3&&exists;i++)
{    
System.Diagnostics.Process.Start(“C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\svnunstall.exe”);
Sleep(2000);//或足够长的时间以确保卸载过程完成执行
exists=File.exists(“C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\RevisionNumber.txt”);
}
Console.WriteLine(存在);
Console.ReadLine();
}

原始代码和for循环的作用与递归函数的作用完全相同。我不太喜欢发布这个代码。我所能想到的使用递归函数的唯一有效时间是在构建某种树结构时

您还应该注意,如果没有正确实现递归函数,并且没有中断使用递归函数可能创建的连续循环,则会遇到
StackOverflow
异常,因为调用的方法被添加到堆栈中,堆栈最终会耗尽内存

以下是根据您的需要实现递归函数的一种方法:

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");

    }
公共作废流程(整数计数=0)
{
bool exists=File.exists(“C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\RevisionNumber.txt”);
如果(存在且计数小于3)
{
System.Diagnostics.Process.Start(“C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\svnunstall.exe”);
Thread.Sleep(2000);//或足够长的时间,以确保卸载进程完成执行
//文件存在
WriteLine(“文件存在”);
进程(++计数);
}
其他的
{
WriteLine(“重试次数超过3次。文件未卸载”);
}
如果(!存在)
Console.WriteLine(“文件卸载”);
}

下面是递归方法的代码片段。试试看,如果你有任何疑问,请告诉我

static bool FileExists(bool _fileexists, int Count)
    {
        //Console.WriteLine("Inside File Check");
        Count++;
        System.Diagnostics.Process.Start("C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\SvnUninstallation.exe");
        Thread.Sleep(2000);
        return (_fileexists == false && Count <=3) ? FileExists(File.Exists("C:\\IFRToolLog1.txt"),Count) : true;            
    }
static bool FileExists(bool\u FileExists,int Count)
{
//Console.WriteLine(“内部文件检查”);
计数++;
System.Diagnostics.Process.Start(“C:\\Users\\sk185462\\Desktop\\SVNUPDATED\\svnunstall.exe”);
《睡眠》(2000年);

返回(_fileexists==false&&Count你能澄清一下你的问题吗,我会尽力帮助你。你想要一个递归方法,需要运行上述代码三次吗?还是想要一个递归方法,如果文件不再存在,不要继续卸载?嗨,Monstertjie_za,我想要一个需要运行上面的代码三次。嗨,Raj Kumar,但是上面的代码没有重试,对吗?它只返回true(或)false,它将重试,直到满足true条件。我们需要如何在页面加载中调用它???public static void Main(string[]args){ProcessStartInfo startInfo=new ProcessStartInfo();FileExists(bool FileExists);//布尔fileexists1;//Program.FileExists(fileexists1);}只需调用FileExists(false)最后一个帮助Raj Kumar工作正常,但是我们可以在monstertjie_za发布的下面的帖子中返回bool吗?我无法复制代码并粘贴在评论中工作!非常感谢:)但是我想在这个代码中返回bool,你能帮我吗???