我正在向API添加異步功能。我有這樣的接口:「等待」可用的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嗎?
什麼是你的內部'ReadAsync()'實現什麼樣子的? –
如果你希望它總是在'using'中使用,那麼'IThing'不應該'擴展IDisposable'?如果它實際上不是一個可隨意使用的資源,那麼它不應該用在''using''開頭。 – Servy