1 回答

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果采用異步,則始終采用異步。RestSharp 允許您進(jìn)行異步調(diào)用
所以你可以重構(gòu)數(shù)據(jù)訪問
public class GetResults {
public static async Task<List<Result>> GetDataAsync(string url) {
var client = new RestClient();
var request = new RestRequest(url, Method.GET);
request.AddHeader("User-Agent", "Nothing");
IRestResponse<List<Result>> results = await client.ExecuteTaskAsync<List<Result>>(request);
return results.Data;
}
}
接下來,由于表單加載是一個(gè)事件處理程序,因此您也可以使其異步并加載數(shù)據(jù)。
public Form1() {
InitializeComponent();
}
private async void Form1_Load(object sender, EventArgs e) {
//On UI thread
resultsLoadedLabel.Text = "Loading data!";
//get data on separate thread (non blocking)
List<Result> results = await GetResults.GetDataAsync("http://worldcup.sfg.io/teams/results/");
//Back on UI thread
resultsLoadedLabel.Text = "Podaci u?itani!";
foreach (var result in results) {
ResultBox.Items.Add(result.Fifa_Code);
}
}
確保在使用異步調(diào)用時(shí)訪問 UI 控件時(shí),可以在創(chuàng)建它們的主線程上訪問它們(請(qǐng)參閱注釋)。
- 1 回答
- 0 關(guān)注
- 135 瀏覽
添加回答
舉報(bào)