当前位置:编程学习 > C#/ASP.NET >>

C#中线程的使用及其效率

最近做毕业设计,C#的windows forms程序

forms.cs中有2个集合:一个点的集合dijNodeCollection,有9000个点;一个线的集合dijEdgeCollection,有16000条边

我在加载图的时候,要在后台构建图的拓扑网络,我的方法是用for嵌套循环,即

for (ni = 0; ni < node_count; ni++)
            {
                node = this.NodeCollecion.NodeCol[ni];
                for (ei = 0; ei < edge_count; ei++)
                {
                    edge = this.EdgeCollecion.EdgeCol[ei];
                    if (edge.StartNodeID != null && edge.EndNodeID != null)
                    {
                        continue;
                    }
                    if (node.Point.X == edge.Polyline.FromPoint.X &&
                           node.Point.Y == edge.Polyline.FromPoint.Y)
                    {
                        edge.StartNodeID = node.NodeID;//边的起点号
                    }
                    else if (node.Point.X == edge.Polyline.ToPoint.X &&
                           node.Point.Y == edge.Polyline.ToPoint.Y)
                    {
                        edge.EndNodeID = node.NodeID;//边的终点号
                    }
                }
            }



但是这样效率很低,我就想用Thread实现,把那个节点集合分为几块,每块有100个点,然后每个线程处理100个点
但是如何写这样的处理代码呢?
--------------------编程问答-------------------- 线程编程都有好多种,从易到难,现在都忘了 --------------------编程问答--------------------
引用 1 楼 qq865926998 的回复:
线程编程都有好多种,从易到难,现在都忘了

都忘了?! --------------------编程问答-------------------- 不需要线程 --------------------编程问答-------------------- 感觉这个不能用线程处理,就算使用了多线程,效率也高不了多少,最多让界面在绘制过程中不是假死状态。

是不是可以在生成点线的同时进行一些图片的绘制工作,在后台运行,需要的时候只要显示图片就可以了 --------------------编程问答-------------------- Parallel.For --------------------编程问答-------------------- 线程效率不会提高的。你可以使用后台线程,这样界面就不会卡了。 --------------------编程问答-------------------- 这个跟线程没有关系,这个是设计问题。

你可以先加载一部分数据,如果图的location改变,再去加载数据。 --------------------编程问答-------------------- 弄个积分 没下载分了...
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,