我正在为API添加异步功能。我有这个界面:
public interface IThing
{
bool Read();
Task<bool> ReadAsync();
}
来电者可以像这样使用异步:
using (IThing t = await GetAThing())
{
while (await t.ReadyAsync();
{
// do stuff w/the current t
}
}
有一个实现IThing的类:
public class RealThing : IThing
{
public bool Read()
{
// do a synchronous read like before
}
public Task<bool> ReadAsync()
{
return _internal.ReadAsync(); // This returns a Task<bool>
}
}
这个编译和工作!但是其他示例更喜欢ReadAsync()的实现:
public async Task<bool> ReadAsync()
{
return await _internal.ReadAsync();
}
鉴于调用者将等待,为什么API中的异步/等待?
答案 0 :(得分:4)
public async Task<bool> ReadAsync()
{
return await _internal.ReadAsync();
}
没有必要这样做。它只增加了开销,并没有带来任何好处。
您的代码更好:
public Task<bool> ReadAsync()
{
return _internal.ReadAsync();
}