我想要执行两项任务。
StartAccessTokenTimer()
每60秒运行一次并刷新accessstoken变量。
StartItemsTimer()
将在StartAccessTokenTimer()
之后启动,并且如果访问令牌获得,则每3秒工作一次。
private accessToken = "";
private async Task StartAccessTokenTimer()
{
CancellationTokenSource source = new CancellationTokenSource();
while (true)
{
accesstoken = await GetAccessToken();
await Task.Delay(TimeSpan.FromSeconds(3), source.Token);
}
}
private async Task StartItemsTimer()
{
CancellationTokenSource source = new CancellationTokenSource();
while (true)
{
var items = await GetItems(accessToken, "1");
await Task.Delay(TimeSpan.FromSeconds(60), source.Token);
}
}
public async Task StartOperations(){
await StartAccessTokenTimer();
await StartItemsTimer();
}
但它不会成为GetItems()
methot。因为StartAccessTokenTimer()
永远不会启动..它会持续触发GetAccessToken()
。
答案 0 :(得分:1)
要同时触发它们,您可以执行以下操作:
public async Task StartOperations()
{
await Task.WhenAll(new Task[]
{
StartAccessTokenTimer(),
StartItemsTimer()
});
}