假设您正在开发一个api并希望提供异步方法,但是用户可能实际上并不希望在继续下一行之前“等待”特定的异步方法完成。有没有办法让它“失火”?也就是说,使该方法实际上通过Task异步运行,并让它继续到下一行而不用“等待”吗?这样,如果用户想要等待它,那么他们可以,而那些只想作为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/