多个异步方法调用需要时间来执行

时间:2011-08-27 11:47:45

标签: c# .net performance asynchronous

我正在检查以提高我的应用程序性能。有一种方法可以逐个调用九个方法来与从不同表中获取数据的服务进行通信。所有这九个调用都是异步的。因此它不应该从主线程消耗太多时间,但执行时间超过3秒,这是加载表单所消耗的时间的主要部分。我怎样才能减少这段时间的消耗。

更新

我正在使用MVP模式。在这种情况下,我逐个调用presenter方法,演示者通过代理与WPF服务进行通信,我的代理具有Sync和Async方法的签名,这些方法使用独立的演示者方法调用。在这种情况下,所有九种方法都是异步但是这种方法需要花费太多时间,2秒不是太多,但它是加载页面所消耗的总时间的主要部分。

3 个答案:

答案 0 :(得分:3)

如果九个方法都向同一主机发出HTTP请求,您可能会发现您遇到了问题,因为默认情况下只允许同时向同一主机发出两个HTTP请求。一个选项是提高该限制(您可以在app.config中执行此操作),另一个选项是更改协议(如果可以)在一个请求中传递所有操作,并让服务器决定如何同时执行操作。这将简化客户端操作,从开始。

答案 1 :(得分:1)

即使请求是异步执行的,您仍然需要等待建立连接。

无论是什么原因,您都应该能够将启动这些请求的方法推送到Threadpool或TPL任务。这应该解决你的表格加载延迟。

答案 2 :(得分:0)

3秒不是太多时间,无论如何,如果启动异步方法导致表单在加载时变慢,那么我建议你在另一个线程或计时器中以表单加载或构造函数执行该代码表单完成加载后,执行操作不会影响表单加载时间。