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 關注
- 123 瀏覽
添加回答
舉報