这两个异步函数之间的区别

R. *_*Kut 1 c# asynchronous async-await

您好我没有得到以下两个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;
    });
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

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;
}
Run Code Online (Sandbox Code Playgroud)

Joh*_* Wu 6

它们都没有返回IRestResponse,所以我无法访问StatusCode字段.

他们回来了Task<IRestResponse>.您可以通过等待任务来获取界面,例如

var task = Post(resource, objectToPost);
IRestResponse response = await task;
Run Code Online (Sandbox Code Playgroud)

或者在一行(更常见):

var response = await Post(resource, objectToPost);
Run Code Online (Sandbox Code Playgroud)

这两个异步函数之间的区别

第二个例子更直截了当.第一个示例旋转一个额外的任务并将其等待返回给调用者,而第二个示例直接等待RestClient.我认为没有理由在第一个例子中使用该结构.