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 で async/await を使用するのはなぜですか?

4

1 に答える 1

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

その必要はありません。オーバーヘッドが増えるだけで、何のメリットもありません。

あなたのコードはより良いです:

public Task<bool> ReadAsync()
{
  return _internal.ReadAsync();
}
于 2012-12-03T21:05:35.510 に答える