简单的连续呼叫

public async Task<JobResult> GetDataFromWebAsync()
{
  var nextJob = await _database.GetNextJobAsync();
  var response = await _httpClient.GetAsync(nextJob.Uri);
  var pageContents = await response.Content.ReadAsStringAsync();
  return await _database.SaveJobResultAsync(pageContents);
}

这里需要注意的主要事项是,虽然每个 await-ed 方法都是异步调用的 - 并且在该调用的时间内控制被返回到系统 - 方法内部的流程是线性的,并且不需要任何特殊处理,因为异步。如果任何方法调用失败,则异常将按预期处理,在这种情况下,意味着方法执行将被中止,异常将在堆栈中上升。