【发布时间】:2011-10-12 01:35:57
【问题描述】:
当用户将项目文件加载到我的应用程序中时,可能需要很长时间 - 几十秒。我理解使用后台线程来处理阻塞 UI 的东西的概念。但是,在这种情况下,用户无需执行任何操作 - 他们正在等待项目文件加载 - 除了观看进度消息。
我正在考虑在不同线程之间分配不同项目元素的处理。但是,我完全不清楚这是否真的会产生有价值的改变。一些项目元素在创建过程中确实花费了更多时间,但通常复杂的数量很少,简单的数量很多。处理涉及创建一些绘图代码,以便元素可以显示在画布上。
我了解线程之间时间切片的概念,但据我所知,总时间没有改变,使用线程可能会有一些开销。
我也明白,对于多核处理器,如果线程分布在处理器之间,则可能会发生一些真正的并发(抱歉,我对线程的了解不够,无法知道这是否正确描述)。我不知道这是否容易安排。显然,这对使用单核处理器的用户没有帮助。
更改代码以进行尝试并非易事,因此我会听取您的意见,看看这是否值得尝试。
谢谢。
【问题讨论】:
-
我会分析代码并考虑提高它的性能,使其首先保持单线程。并且只有在失败的情况下才考虑使其成为多线程。
-
我知道这不是你问的,但你可能想看看在你的应用程序中加快项目加载时间的可能方法。它可能是比多线程解决问题更好、更容易的方法。
-
谢谢伙计们,我确实使用分析器并寻找使其更快的方法。不幸的是,我认为我已经到了改进的尽头
-
什么需要更长的时间,从磁盘加载数据或将其处理成可用的形式?如果加载需要更长的时间,线程将无法帮助您更快地加载它。您可以做的最好的事情是让一个线程将数据加载到内存中,而第二个线程在数据可用时对其进行处理。这样,可以在处理第一组数据的同时加载第二组数据,从而最大限度地缩短处理第一组和第二组数据之间的时间。
标签: c# .net multithreading