【发布时间】:2018-10-20 16:04:20
【问题描述】:
我想用 for schedule 创建一个链接逻辑。
- 每 1 小时获取一次访问令牌。
- 如果访问令牌获取成功,获取版本
-
但如果 version.HasNextVersion 为 false,访问令牌将继续。
public async Task<string> GetAccessToken(){ /// getting token from server as async. } public async Task<string> GetVersions(string token){ // Web request as async var version = await GetVersionsFromServer(token); // if there are any other version after this version, I will get the next if(version.HasNextVersion) await GetVersions(); } string Main(){ var accessToken = GetAccessToken().Wait(); var version = GetVersions(string token).Wait(); }
我是异步操作和任务库的新手。这可能吗?
【问题讨论】:
-
await已经链接了任务。它不会使任何东西异步运行。它等待已经异步操作完成,然后在异步操作之后立即继续执行代码,即链接它 -
顺便说一句,在 C# 7.2 中,您可以定义
async Task Main()方法并避免.Wait()调用。在以前的版本中,创建一个单独的方法,其中包含需要async的任何内容,并且只使用一次.Wait()
标签: c# async-await task-parallel-library