我正在开发一个基于 .NET4 的应用程序,它必须请求第三方服务器才能从它们那里获取信息。我正在使用 HttpClient 发出这些 HTTP 请求。
我必须在短时间内创建一百或一千个请求。我想将这些请求的创建限制在一个限制(由常量或其他东西定义),这样其他服务器就不会收到很多请求。
我已经检查了这个链接,它显示了如何减少随时创建的任务数量。
这是我的非工作方法:
// create the factory
var factory = new TaskFactory(new LimitedConcurrencyLevelTaskScheduler(level));
// use the factory to create a new task that will create the request to the third-party server
var task = factory.StartNew(() => {
return new HttpClient().GetAsync(url);
}).Unwrap();
当然,这里的问题是,即使当时创建了一个任务,也会同时创建和处理很多请求,因为它们运行在另一个调度程序中。我找不到将调度程序更改为 HttpClient 的方法。
我应该如何处理这种情况?我想将创建的请求数量限制在一定范围内,但不要阻止等待这些请求完成。
这可能吗?有任何想法吗?