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



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

更新:

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

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

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

不管是什么原因,你应该能够把启动这些请求的方法推到线程池或TPL任务上。这应该解决您的表单加载延迟。

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

最新更新