public static async Task<T> FirstIfNotNullOrEmptyAsync<T>(this Task<IEnumerable<T>> obj) where T : class
{
var first = await Task.WhenAny(obj);
return first?.Result?.FirstOrDefault() ?? null;
}
這裏有2層其他的方法來顯示完整的這真的是異步嗎? IEnumerable的<T>擴展
主要方法
private async Task<IEnumerable<T>> fetchRecordsAsync(SqlCommand SqlCommand, bool isSingleRecord)
{..some code...}
(在這種情況下,將集合或集合空在只返回項)
這裏是來電者只會收取並通過T:
protected async Task<T> GetSingleRecord(SqlCommand SqlCommand)
{
return await fetchRecordsAsync(SqlCommand, true).FirstIfNotNullOrEmptyAsync();
}
這是正確的方式來處理IEnumerable的異步擴展或它將做同步?
我是否真的需要創建另一個任務(第一個)?
直到任務完成後,它纔會繼續。 –
您的意思是*這個IEnumerable> obj *的論點? –
Clay
你會怎麼稱呼這個方法?你如何通過'任務>'? –