【发布时间】:2016-01-26 23:34:07
【问题描述】:
有一种方法可以通过
获取服务器响应var response = (HttpWebResponse)await request.GetResponseAsync();
还有额外的代码来设置请求。我将它包装在一个异步方法中。此方法以 url 作为参数。对该方法的调用再次被一个方法包裹起来,该方法构造了实际的 url。
想象一下最终的方法调用如下所示:
string resultString = await GetResultString(parameter);
然后出现以下问题:我想同时发送多个请求。我有一个参数列表。我是这样做的:
var tasks = new List<Task<string>>();
foreach(parameter in parameters)
{
tasks.Add(GetResultString(parameter));
}
List<string> resultStrings = await TaskEx.WhenAll(tasks);
这也很好用。但是请求的数量是可变的。所以它可能是 10 个请求。但是您也有可能触发 10.000 个请求,甚至 100.000 个。所以我想到了在进度条中监控进度。但我怎么能这样做呢?我已经看过this 一段代码,但我不知道如何将它用于我的代码。每次任务完成时,我都需要引发一个事件。但是任务完成没有回调怎么办?
感谢和问候
PS:有人能告诉我如何在代码中使用复制和粘贴而不在每一行代码前放置四个空格吗?我无法从高级帮助中获得任何帮助。我只是无法让它工作。我很抱歉我的英语不是太完美。我是德国人。 :-)
【问题讨论】:
-
从编辑器(即 Visual Studio)复制并粘贴代码。突出显示文本并点击编辑器中的 {} 图标;)
-
使用您在链接中提供的代码时,出现了什么问题?您可以使用该代码并向我们展示您遇到的问题吗?该代码对我来说似乎很清楚
-
我尚未将我的代码转换为链接中提供的代码。我根本不知道如何或在哪里触发该代码中的多个异步任务。在里面的某个地方,我需要做类似
TaskEx.WhenAll(tasks)之类的事情,不是吗?
标签: c# asynchronous c#-5.0