2011-06-18 49 views
4

我在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(); 
} 

回答

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; 
     }  
} 
0

使返回值超出ScanChanges,它可能是布尔值,如果它打破循环返回true否则返回false。

然后在main中设置break break条件。

0

使用中断退出循环。

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

同样适用于这条评论,您不能使用'break'直接在另一种方法 - 使用jonsca的方法。 – KilZone

+0

这是行不通的 –

3

ScanChanges回报bool如果您已达到if语句中ScanChanges,然后必须在while循环跳过这两个程序,如果ScanChanges回来真正另一个if声明。