在方法返回之前,只有下面方法的最后一行使用'await',所以这是不是意味着该方法基本上是同步的,应该只调用"Get()"而不使用async修饰符和后缀Async?
public virtual async TaskGetAsync(Guid id) { // some more code here return await _dbSet.FindAsync(id); }
Stephen Clea.. 15
这不意味着该方法基本上是同步的
不,这是异步的.您可能正在考虑顺序(从一件事情进展到下一件事情),而不是同步(阻止当前线程).一个await
将暂停方法(按顺序),但不阻塞线程(异步地).有关更多信息,请参阅我的async
介绍.
没有async修饰符
虽然你可以忽略async
/ await
关键字,但我建议你不要.这是因为// some more code here
可能会抛出异常.我盖这个问题和其他考量在我的博客文章eliding async
和await
.
和后缀Async?
不,该后缀适用于任何返回等待的方法(例如,Task
).所以,即使你的的Elid async
和await
,它仍然返回该任务应该被期待已久的,所以它仍然应该有Async
后缀.
你可以这样想:Async
后缀是API接口的一部分.该async
关键字是一个实现细节.他们经常一起去,但并非总是如此.
这不意味着该方法基本上是同步的
不,这是异步的.您可能正在考虑顺序(从一件事情进展到下一件事情),而不是同步(阻止当前线程).一个await
将暂停方法(按顺序),但不阻塞线程(异步地).有关更多信息,请参阅我的async
介绍.
没有async修饰符
虽然你可以忽略async
/ await
关键字,但我建议你不要.这是因为// some more code here
可能会抛出异常.我盖这个问题和其他考量在我的博客文章eliding async
和await
.
和后缀Async?
不,该后缀适用于任何返回等待的方法(例如,Task
).所以,即使你的的Elid async
和await
,它仍然返回该任务应该被期待已久的,所以它仍然应该有Async
后缀.
你可以这样想:Async
后缀是API接口的一部分.该async
关键字是一个实现细节.他们经常一起去,但并非总是如此.