2015-12-22 4 views
1

Я немного новичок с C# и надеюсь получить некоторые рекомендации по этому вопросу. -Я пишу программу, которая выполняет файл .bat, когда xml-файл удаляется в папку, а затем перемещает файл xml в готовый каталог.C# Как остановить/приостановить выполнение до следующего вызова метода

Проблема заключается в том, что файл bat занимает ~ 10 секунд для запуска и требует наличия XML-файла в каталоге, однако мой метод перемещения перемещает XML-файл сразу после выполнения команды .bat-файла, заставляя .bat для отказа.

После исследования вокруг него может возникнуть ответ Thread.Sleep или Task.Delay, поскольку я просто хотел бы приостановить выполнение метода, пока файл .bat завершится, а затем выполнит метод movefile, но я не могу понять/получить выполнение для остановки в течение короткой продолжительности до вызова MoveFilesCompleted.MoveComp().

Это то, что я имею, но надеясь, что за любые советы ..

private void _fileWatcher_Created(object sender, FileSystemEventArgs e) 
    { 
     FileInfo f = new FileInfo(e.FullPath); 
     if (f.Extension.Equals(".xml") || f.Extension.Equals(".XML")) 
     { 
      Logger.log(String.Format("File Created: Path: {0}, Name: {1}", e.FullPath, e.Name)); 

      try 
      { 
       exBat.executeBAT(); 


      } 
      catch (Exception ex) 
      { 
       Logger.log(String.Format("Running the XMLtoINF SQLload failed.")); 
      } 

      Thread.Sleep(15000); 

      MoveFilesCompleted.MoveComp(); 

     } 

    } 
+0

У вас есть контроль над запущенным скриптом? Было бы полезно, если бы у вас было немного больше информации об этом, есть много способов сделать то, что вам нужно сделать, а некоторые способы лучше других, но нужно знать, сколько информации у вас есть над скриптом, прежде чем я смогу сказать вы – konkked

ответ

1

Предполагая, что executeBAT использует System.Diagnostics.Process класс для запуска файла BAT, вы можете сделать это ждать, что процесс выхода, вызвав Process.WaitForExit.

+0

Спасибо @ adv12. Я не выполнял команду WaitForExit(), которая заставила команду оставаться открытой до завершения. Я добавил его после .Start() и сохранил файл bat до конца. – thedewman78

1

Было бы очень полезно, если вы вывесили немного о том, как вы выполняете пакетный файл!

В противном случае проверьте здесь: How to wait until my batch file is finished

Смежные вопросы