如何逃避循环

时间:2011-06-18 15:06:49

标签: c# .net loops

我在Main()中有一个while循环,它经历了几种方法。虽然名为ScanChanges()的一个方法有一个if / else语句,但在if的情况下,它必须跳转到Thread.Sleep(10000)(在循环结束时)。

static void Main(string[] args)
{    
    while (true)
    {
        ChangeFiles();    
        ScanChanges();    
        TrimFolder();    
        TrimFile();    
        Thread.Sleep(10000);
    }
}    

private static void ChangeFiles()
{
    // code here
}

private static void ScanChanges()
{
} 

FileInfo fi = new FileInfo("input.txt");
if (fi.Length > 0)
{
    // How to Escape loop??
}
else
{
    Process.Start("cmd.exe", @"/c test.exe -f input.txt > output.txt").WaitForExit();
}

4 个答案:

答案 0 :(得分:6)

让ScanChanges返回一些值,表明您是否必须跳到循环结束:

class Program
    {
        static void Main(string[] args)
        {

            while (true)
            {
                ChangeFiles();

                bool changes = ScanChanges();

                if (!changes) 
                {
                    TrimFolder();

                    TrimFile();
                }
                Thread.Sleep(10000);
            }
        }


private static void ChangeFiles()
{
  // code here
}

private static bool ScanChanges()
{
     FileInfo fi = new FileInfo("input.txt");
     if (fi.Length > 0)
     {
         return true;
     }
     else
     {
         Process.Start("cmd.exe", @"/c test.exe -f input.txt > output.txt").WaitForExit();

         return false;
      }      
}

答案 1 :(得分:3)

如果您已在ScanChanges内找到bool语句,则if返回ScanChanges,然后在while循环中再生一个if语句如果ScanChanges恢复正确,则跳过这两个程序。

答案 2 :(得分:0)

使ScanChanges返回值,如果它将断开循环,则可能是boolean返回true,否则返回false。

然后在main中设置中断循环条件。

答案 3 :(得分:0)

使用break来摆脱循环。

if (fi.Length > 0)
{
    break;
}