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