2017-02-13 62 views
0

如何訪問textbox並通過http請求接收responseString如何從async訪問文本框任務

public async void button1_Click(object sender, EventArgs e) 
    { 

     await RunAsync(); 
    } 


    static async Task RunAsync() 
    { 
     using (var client = new HttpClient()) 
     { 
      var values = new Dictionary<string, string> 
      { 
       { "token", "aez" }, 
      }; 

      var content = new FormUrlEncodedContent(values); 

      var response = await client.PostAsync("localhost", content); 

      var responseString = await response.Content.ReadAsStringAsync(); 
     } 

    } 

回答

1

您可以使用Task<string>的結果中的字符串。

public async void button1_Click(object sender, EventArgs e) 
{ 
    textbox.Text = await RunAsync(); 
} 

static async Task<string> RunAsync() 
{ 
    using (var client = new HttpClient()) 
    { 
     var values = new Dictionary<string, string> 
     { 
      { "token", "aez" }, 
     }; 

     var content = new FormUrlEncodedContent(values); 

     var response = await client.PostAsync("localhost", content); 

     return await response.Content.ReadAsStringAsync(); 
    } 
} 

也可以使RunAsync非靜態的,所以你可以this引用訪問文本框。只需刪除靜態關鍵字並在方法內爲文本框賦值。

async Task RunAsync() 
{ 
    using (var client = new HttpClient()) 
    { 
     var values = new Dictionary<string, string> 
     { 
      { "token", "aez" }, 
     }; 

     var content = new FormUrlEncodedContent(values); 

     var response = await client.PostAsync("localhost", content); 

     var responseString = await response.Content.ReadAsStringAsync(); 

     textbox.Text = responseString; 
    } 
} 
+0

RunAsync非靜態工作fine.thanks。 – user2254798