2013-06-02 157 views
-5

寫下了這個代碼,它在按鈕單擊時調用一次異步函數。在每個循環上更新變量

但我希望它不斷更新每個循環的Page變量。

示例:第一個循環頁面= 1第二個循環頁面= 2等等,然後在另一個按鈕單擊時停止循環。

private void button2_Click(object sender, EventArgs e) 
{   
    var searchParameters = new PlayerSearchParameters 
    { 

     Page = 2,     
     League = League.BarclaysPremierLeague, 
     Nation = Nation.England, 
     Position = Position.CentralForward, 
     Team = Team.ManchesterUnited 

    }; 

    LoginM.SearchItemsAsync(searchParameters);   
} 

對不起,不給/從文本框,通過調用獲得並送到上LoginM.cs文件異步函數 的searchParamters詳細的解釋:

LoginM.SearchItemsAsync(searchParameters); 

我想LoginM.SearchItemsAsync(searchParameters );被連續調用,每次被調用時,「頁面」變量應加1 +1

如何創建一個循環來執行上述操作?

它是一個WinForm項目。

+1

使pagenumber成爲一個全局變量,並且每增加一次點擊一次,像_lastPage ++; – CSharpie

+0

但我希望它在每個循環中自動更新。 – vmark99

+1

您需要提供更多信息... – BrunoLM

回答

0

您將需要一個地方來保存您的當前值,在我將它作爲本地名爲pageNum的示例中。然後在你的循環中,你將增加這個變量並將其賦值給在其構造器中構造的PlayerSearchParameters對象上的Page屬性。

如果您希望方法在開始循環的下一次迭代之前等待異步方法完成,請使事件處理程序asyncawait成爲您要調用的那個的結果。

private async void button2_Click(object sender, EventArgs e) 
{ 
    var pageNum = 0; 

    while(true) //<-- Insert whatever your real condition is here instead of true 
    { 
     var searchParameters = new PlayerSearchParameters 
     { 
      Page = ++pageNum, 
      League = League.BarclaysPremierLeague, 
      Nation = Nation.England, 
      Position = Position.CentralForward, 
      Team = Team.ManchesterUnited 
     }; 

     await LoginM.SearchItemsAsync(searchParameters); 
    } 
} 

如果你試圖讓這個行爲,而不必首先單擊一個按鈕,你可以把方法體中的處理程序Load事件表單上代替。