您好我没有区分以下两个asnyc函数,有人可以向我解释一下吗?它们都没有返回IRestResponse,所以我无法访问StatusCode字段。我必须在这里演员吗?
public async Task<IRestResponse> Post<T>(string Ressource, T ObjTOPost) where T : new()
{
return await Task.Factory.StartNew(() =>
{
var client = new RestClient("test.com");
var request = new RestRequest(Ressource, Method.POST);
var response = client.Execute(request);
return response;
});
}
而且:
public async Task<IRestResponse> Post<T>(string Ressource, T ObjTOPost) where T : new()
{
var client = new RestClient("test.com");
var request = new RestRequest(Ressource, Method.POST);
var response = await client.ExecuteTaskAsync<T>(request);
return response;
}
答案 0 :(得分:6)
它们都没有返回IRestResponse,所以我无法访问StatusCode字段。
他们返回Task<IRestResponse>
。您可以通过等待任务来获取界面,例如
var task = Post(resource, objectToPost);
IRestResponse response = await task;
或者在一行(更常见):
var response = await Post(resource, objectToPost);
这两个异步函数之间的区别
第二个例子更直截了当。第一个示例旋转一个额外的任务并将其等待返回给调用者,而第二个示例直接等待RestClient。我认为没有理由在第一个例子中使用该结构。