我已創建Stream
的自定義子類,其實現爲Read
。 雖然在實現中使用的操作可以很好地利用async
API,所以我也想提供ReadAsync
實現。在其阻止版本中使用異步實現方法
這些方法共享很多類似的行爲,避免代碼重複的最簡單方法是將實現中的邏輯保存在ReadAsync
中,並使用Read
實現中的邏輯。這看起來像這樣:
public override int Read(byte[] buffer, int offset, int count)
{
return ReadAsync(buffer, offset, count).Result;
}
這種方法會有什麼影響嗎?由於Read
方法應該阻止當前線程,我認爲它完全符合規範。
謝謝!
這可能有所幫助:http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html – 2015-03-03 07:04:24