[英]How to return another value from method in “third party” lib?
Task<string>[] tableOfWebClientTasks = new Task<string>[taskCount];
for (int i = 0; i < taskCount; i++)
{
tableOfWebClientTasks[i] = new WebClient().DownloadStringTask(allUrls[count - i - 1]);
}
Task.Factory.ContinueWhenAll(tableOfWebClientTasks, tasks =>
{
Parallel.ForEach(tasks, task =>
{
//Here I have result from each task.
//But information which url is executed on this task, is lost.
});
});
例如,我可以创建类(具有两个公共属性,一个用于任务,第二个用于url)并返回实例。 但是我将此方法与其他方法联系在一起。
您对此问题有解决方案吗?
如果您希望能够将任务与创建任务的网址相关联,则可以使用字典进行映射:
Task<string>[] tableOfWebClientTasks = new Task<string>[taskCount];
var taskIdToUrl = new Dictionary<int,string>();
for (int i = 0; i < taskCount; i++)
{
var url = allUrls[count - i - 1];
var task = new WebClient().DownloadStringTask(url);
tableOfWebClientTasks[i] = task;
taskIdToUrl.Add(task.Id, url);
}
TaskFactory.ContinueWhenAll(tableOfWebClientTasks, tasks =>
{
Parallel.ForEach(tasks, task =>
{
// To get the url just do:
var url = taskIdToUrl[task.Id];
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.