Как избежать петли - PullRequest
       3

Как избежать петли

4 голосов
/ 18 июня 2011

У меня есть цикл while в Main (), который проходит через несколько методов. Хотя один метод с именем 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 ]

6 голосов
/ 18 июня 2011

Сделать 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;
      }      
}
3 голосов
/ 18 июня 2011

Пусть ScanChanges вернет bool, если вы достигли этого оператора if в ScanChanges, а затем добавьте еще один оператор if в цикле while, который пропускает эти две процедуры, если приходит ScanChangesверна правда.

0 голосов
/ 18 июня 2011

Используйте разрыв, чтобы выйти из цикла.

if (fi.Length > 0)
{
    break;
}
0 голосов
/ 18 июня 2011

Сделайте возвращаемое значение из ScanChanges, оно может быть логическим, если произойдет разрыв цикла, верните true, иначе верните false.

Затем установите условие разрыва в главном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...