假设您正在开发一个 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/