我想執行任務列表,並在任何任務完成後執行同步操作,但我需要知道它們是哪個。Task.WhenAny ContinueWith:獲取參數?
查看我的示例,並查看代碼中的註釋,該註釋位於我不知道如何實現的幾行之前。
public async Task<bool> GreetAsync(string name)
{
if (name == null)
return false;
await InternalGreeter.GreetAsync(name);
return true;
}
public async Task GreetAllAsync()
{
var tasks = UserNames.Select(un => GreetAsync(un)).ToList();
while(tasks.Any())
{
var finished = await Task.WhenAny(tasks);
if(finished.Result)
{
//Here's what I'd like to achieve
var username = finished.Arguments[0];
WriteLine($"User {username} has been greeted.");
}
tasks.Remove(finished);
}
}
基於this示例。
在我的真實世界中,我有一個客戶列表,我必須一個接一個地遍歷它們並更新遠程服務器的信用狀態(遠程服務器不支持批量更新)。每次更新後,我必須在我的數據庫中標記此客戶已獲得認證。
那麼,你的問題是什麼? –
你做了什麼,發生了什麼? –
我不認爲你可以(應該?)這樣做。爲什麼不只是'UserNames.Select(un => GreetAsync(un))。ContinueWith(...)。ToList();'? – DavidG