“等待”可用的API

时间:2012-12-03 20:38:37

标签: c# asynchronous c#-5.0

我正在为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中的异步/等待?

1 个答案:

答案 0 :(得分:4)

public async Task<bool> ReadAsync()
{
  return await _internal.ReadAsync();
}

没有必要这样做。它只增加了开销,并没有带来任何好处。

您的代码更好:

public Task<bool> ReadAsync()
{
  return _internal.ReadAsync();
}