我有一个Monodroid应用程序可以执行许多webrequests。我正在向活动提出要求。因此,我需要一个队列来处理我的活动之外的请求。这是为了避免同时发出多个请求。
因为我使用ThreadPool.QueueUserWorkItem在另一个线程上发出请求,看起来如果用户打开一个活动,启动请求然后返回打开另一个活动并在第一个请求完成webrequests锁的使用之前启动另一个请求起来,不再有用了。
最好的方法是使用活动之外的回调对请求任务进行排队,或者有人知道/有类似的例子吗?我认为它需要处理上述情况,在任务完成之前可以关闭/销毁活动。这可能意味着可以取消任务或任务可以运行但不更新UI,因为它已不存在。
在我的情况下,我所做的请求在不同的函数中执行不同的操作,因此更新UI的回调并不总是相同的函数。我用来发出请求的函数也有不同的参数。我不确定这些要点是否会使得更难/更容易为此问题创建解决方案,但我认为我需要重新编写很多代码。
答案 0 :(得分:1)
a)使用异步方法发出请求,这样就不会挂起线程池线程。
b)增加您请求的域的连接限制。
ServicePointManager.FindServicePoint(uri).ConnectionLimit=10000;