我如何通过另一个返回异步任务

本文关键字:异步 任务 返回 另一个 何通过 | 更新日期: 2023-09-27 17:50:14

我有两个异步方法,如下:

protected async Task<bool> DoSomething(byte[] data) {
    await System.Console.Out.WriteLineAsync("Do things.");
    Data refinedData = Data.fromByteArray(data);
    return DoSomething(refinedData); // Compiler error!
}
protected async Task<bool> DoSomething(Data data) {
    /* Do way more interesting things with data now that it's our type! */
    return true;
}

我想做的是不必在我的第一个返回语句中使用await,而是只需传递到DoSomething的第二次覆盖。是否有一个特殊的方法,我可以调用第二个覆盖的返回,以推迟它生成的Task实例,或一个特定的语言机制,我可以/应该使用?

我如何通过另一个返回异步任务

你应该从第一个方法签名中删除async关键字,或者你应该在返回之前使用await关键字。

return await DoSomething(refinedData);