2016-11-18 50 views
-1

這裏,循環計數的值是我的困境:提取在運行C#

public void checkCountProgress(int countProgress, int totalDataSize){ //work done here} 

public void func1(int passVar) 
{ 
    for(int = 0; i<= 2000; i+=64){ 
    //do work 
     checkCountProgress(i, 2000); 
    }  
} 

每次當我通過for循環,我由64 checkCountProgressFunction增量明顯改變迭代給我的價值我在任何點我的客戶端連接到遠程主機斷開連接。所以我想繼續從停止的地方寫入數據併發送到網絡。我會手動停止我的服務器,在調用函數的參數中更改i的值,運行,從客戶端更新服務引用並繼續,但現在我需要自動執行該操作,因爲我現在必須包含到主機的多個連接。當我看一些例子時,它通常指的是從一個函數傳遞一個參數,獲取它的值並以另一種方法使用它(How to pass value from one method to another?),這與我想要做的完全不同。我怎樣才能做到這一點?

回答

0

你的意思是使用設置來存儲循環停止的值? 如果是的話,這裏有一個如何使用它們

在項目的屬性,在設置選項卡中添加你想要的值類型的新的設置,並設置範圍用戶一個例子。對於我的例子中,我創建了一個名爲ValueToResume詮釋和0

static void Main(string[] args) 
    { 
     int initialLoopValue = Properties.Settings.Default.ValueToResume; 
     for (int i = initialLoopValue; i <= 2000; i += 64) 
     { 
      //do work 
      checkCountProgress(i, 2000); 
     } 
     Properties.Settings.Default.Reset(); //Loop was completed, we can reset the setting to 0 
    } 

    public static void checkCountProgress(int countProgress, int totalDataSize) 
    { 
     if (countProgress > 600) 
     { 
      Properties.Settings.Default.ValueToResume = countProgress; 
      Properties.Settings.Default.Save(); 
      Environment.Exit(0); //force application exit 
     } 
    } 
} 

在第二次運行初始值,循環將在值被初始化640

+0

非常感謝你對這種一個深入的答案。我一定會嘗試一下。 –

+0

我唯一的問題是,你明確地爲你的if語句中的countProgress設置一個值。連接可能會在任何階段丟失,而不是600.我該如何實現這一目標? –

+0

@LindaMotaung所以只需刪除if條件,以便設置值每次更新並保存checkCountProgress()被觸發 – Innat3