【问题标题】:How to change a value in a Task如何更改任务中的值
【发布时间】:2015-02-26 18:21:16
【问题描述】:

我有一个async 函数。有多个级别的函数调用都返回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;
}

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

【问题讨论】:

  • 你需要await它。

标签: c# .net asynchronous asp.net-web-api async-await


【解决方案1】:

您不能更改任务的值,您需要创建一个新的。 async 的做法是等待原始结果并将方法标记为async(只有当您需要原始任务的结果时才会出现这种情况):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-05
    • 2016-08-11
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2018-08-29
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多