1 回答
TA贡献1816条经验 获得超4个赞
如果采用异步,则始终采用异步。RestSharp 允许您进行异步调用
所以你可以重构数据访问
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;
}
}
接下来,由于表单加载是一个事件处理程序,因此您也可以使其异步并加载数据。
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);
}
}
确保在使用异步调用时访问 UI 控件时,可以在创建它们的主线程上访问它们(请参阅注释)。
- 1 回答
- 0 关注
- 88 浏览
添加回答
举报