0

我有一个执行许多网络请求的 Monodroid 应用程序。我正在从活动中提出请求。因此,我需要一个队列来处理我的活动之外的请求。这是为了避免同时发出多个请求。

因为我正在使用 ThreadPool.QueueUserWorkItem 在另一个线程上发出请求,所以看起来如果用户打开一个活动,启动一个请求然后返回打开另一个活动并在第一个请求完成使用 webrequests 之前启动另一个请求锁定并且是不再起作用。

最好的方法是将请求任务与活动之外的回调一起排队,或者有人知道/有类似的例子吗?我认为它需要处理如上所述的情况,即在任务完成之前可以关闭/销毁活动。这可能意味着可以取消该任务,或者该任务可以运行但不能更新 UI,因为它不再存在。

在我的情况下,我发出的请求在不同的函数中做不同的事情,因此更新 UI 的回调并不总是相同的函数。我用来发出请求的函数也有不同的参数。我不确定这些点是否会使创建该问题的解决方案变得更难/更容易,但我认为我需要重新编写很多代码。

4

1 回答 1

1

a) 使用异步方法发出请求,这样您就不会挂起线程池线程。

b) 增加您请求的域的连接限制。

ServicePointManager.FindServicePoint(uri).ConnectionLimit=10000;
于 2012-06-21T22:47:42.160 回答