如何更改任务中的值

Luk*_*101 1 .net c# asynchronous async-await asp.net-web-api

我有一个async功能.有多个级别的函数调用都返回a Task.在这个链中的某个点上,我必须修改结果的值.我想这样做而不会中断async函数的流程.注意:

[HttpGet]
[Route("GetWeb")]
public async Task<IHttpActionResult> GetResult([FromUri] string url)
{
    var result = await GetPageText(url);
    return Ok(result);
}

private Task<string> GetPageText(string url)
{
    Task<string> data = GetDataAsync(url);
    //here I would like to manipulate the data variable
    return data;
}
Run Code Online (Sandbox Code Playgroud)

在该函数中,GetPageText如何在不中断异步流的情况下操作数据变量.这可能吗?

i3a*_*non 5

您无法更改任务的值,您需要创建一个新的值.async这样做的方法是等待原始结果并将方法标记为async(只有当您需要原始任务的结果时才会这样):

private async Task<string> GetPageText(string url)
{
    var result = await GetDataAsync(url);
    return result + "bar";
}
Run Code Online (Sandbox Code Playgroud)