繁体   English   中英

C#异步等待任务 <T> 处理

[英]C# async wait for Task<T> to process

我使httpclient postasync,我想将响应转换为我的模型对象。 这是我的代码:

var response = client.PostAsync(TERMBASED_ENDPOINT,
    new StringContent(JsonConvert.SerializeObject(request).ToString(),
                      Encoding.UTF8, "application/json")).Result;

var result = await response.Content.ReadAsAsync<MyObject>();
//other code synchronously processed

因此,此代码是异步处理的。 等待响应被处理并恰好在此之后继续运行同步代码的最佳方法是什么?

谢谢!

“等待”您的帖子通话以展开回复。

var response = await client.PostAsync(TERMBASED_ENDPOINT,
    new StringContent(JsonConvert.SerializeObject(request).ToString(),
                      Encoding.UTF8, "application/json"));

var result = JsonConvert.DeserializeObject<MyObject>(response.Content);

我认为您要执行的操作是将Task存储在变量中,进行一些工作,然后等待响应。

var response = client.PostAsync(TERMBASED_ENDPOINT,
    new StringContent(JsonConvert.SerializeObject(request).ToString(),
                      Encoding.UTF8, "application/json")).Result;

var readTask = response.Content.ReadAsAsync<MyObject>();
//other code synchronously processed
var result = await readTask;

或者,如果您有多个异步任务,则可以等待所有异步任务,然后处理结果。

var response = client.PostAsync(TERMBASED_ENDPOINT,
    new StringContent(JsonConvert.SerializeObject(request).ToString(),
                      Encoding.UTF8, "application/json")).Result;

var readTask = response.Content.ReadAsAsync<MyObject>();
//other code synchronously processed
await Task.WhenAll(readTask);
var result = readTask.Result;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM