2017-01-17 8 views
0

ループ内で実行する必要がある一連の関数があるとしましょう。リトライ処理のアルゴリズム

  1. ゲットSetttingsはnetworkPath & localPathを返します。
  2. networkPath(プロセス1から)から別のlocalPathにファイルをコピーします。
  3. ファイルをから返します。list of infoを返します。
  4. list of infoをDBに保存します。

私はこのコードを持っています。

public void StartProcess() { 
    var settings = GetSettings(); 
    CopyFiles(settings); 
    var listOfData = ReadFile(settings); 
    SaveListOfData(listOfData); 
} 

StartProcess方法は、読み込むファイルを待機するループ内で実行されます。

プログラム/コードが特定のプロセスを再試行できる優れた方法は何でしょうか? たとえば、2番のプロセスでエラーが発生した場合、プログラムはプロセス2を実行し、プロセス1をスキップする必要があります。

+0

'...プログラムは、プロセス2を実行し、それはあなたが古いデータを送信してOKであることを意味してい1..'プロセスをスキップする必要がありますか? – npinti

+0

ようこそ。あなたの質問は、一連の要件として読み込まれます。どのような研究をしましたか?これらは私たちがあなたを助けるのに役立ちます。がんばろう! _ [良い質問をするにはどうすればいいですか?](@stackoverflow.com/help/how-to-ask)_ – MickyD

+0

こんにちは@Roma、ProcessIdを保存して、そのパラメータが 'CopyFiles ) '(プロセス2)。この場合、 'GetSettings()'をスキップする必要があります。これは、最初のループですでに処理されていて、 'CopyFiles(settings)'(Process2)にすでに存在しているからです。 – janmvtrinidad

答えて

2

この場合、boolean変数を使用してこの状況を制御できます。 2つの以上のプロセスのために

bool successrun = true; 
     string settings = ""; // variable type should be same with return type of GetSettings() 
     public void StartProcess() 
     { 
      if (successrun == true) 
       settings = GetSettings(); 

      successrun = true; 
      //set successran = false on any error on the following mwthods 
      CopyFiles(settings); 
      var listOfData = ReadFile(settings); 
      SaveListOfData(listOfData); 
     } 

string settings = ""; // variable type should be same with return type of GetSettings() 

public void StartProcess() 
{ 
    if (successrun == true) 
     settings = GetSettings(); 

    successrun = true; 
    //set successran = false on any error on the following mwthods 
    CopyFiles(settings); 
    var listOfData = ReadFile(settings); 
    SaveListOfData(listOfData); 
} 

void AnyMethodCallsStartProcessInLoop() 
{ 
    int numberOfProcesses = GetNumberOfProcesses(); 
    int i = 0; 
    bool procSuccess = true; 
    while (i <= numberOfProcesses) 
    { 
     StartProcess(); 
     if (procSuccess == true) 
      i++; 
    } 
} 
+0

他のプロセスにエラーがある場合、プロセス3またはプロセス4のエラーを聞かせてください。 – janmvtrinidad

+0

質問には2つのプロセスがありますが、ブール変数が問題を解決しない場合は、整数またはブール配列を使用して各プロセスの成功値を保持する必要があります –

+0

申し訳ありませんが、 – janmvtrinidad

関連する問題