gpt4 book ai didi

c# - 声明一个可以等待*和*异步运行而无需等待它完成的异步方法?

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:14 24 4
gpt4 key购买 nike

假设您正在开发一个 api 并希望提供异步方法,但有可能用户实际上并不希望在继续下一行之前“等待”特定的异步方法完成;有没有办法让它“一劳永逸”?也就是说,使该方法实际上通过 Task 异步运行并让它继续到下一行而无需“等待”?这样,如果用户想要等待它,那么他们就可以等待,而那些只想将其作为任务运行的用户也可以这样做。

最佳答案

(将我的评论移至答案,因为我猜是)

所有异步方法都是开箱即用的。用户永远不会被迫等待任何事情。是否等待您的异步方法取决于用户。您不需要做任何特殊的事情来支持这两种情况。

示例:

public async Task MyAsyncMethod() {
// do something asynchronous in here...
}

你可以用await调用方法:

await obj.MyAsyncMethod();

...或不...

obj.MyAsyncMethod();

在最后一种情况下,该方法将是即发即弃。

用户还可以选择使用您的方法执行以下操作:

Task t = obj.MyAsyncMethod();

// perform some other tasks that don't depend on the completion of "MyAsyncMethod"

await t; // now I want to await on the task before continuing.

// perform more tasks that require the completion of "MyAsyncMethod"

如您所见,我无需对我的异步方法进行任何更改即可支持所有 3 种情况。

关于c# - 声明一个可以等待*和*异步运行而无需等待它完成的异步方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31028795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com