winform界面如何实现异步加载,WinForm(九)UI加载“大”数据

  • A+

由于WinForm的UI是绘制的,所以在加载大量数据数据时会有一定的延时,本篇就讨论几个减少延时的方法。

在加载有规律数据时,可以考虑用递归,简单方便快捷来加载数据,如下,把一个文件夹下的所有文件或文件夹加载到树形菜单上,以树形展示,代码实现如下。

varrootPath = "d://abc/bcd"; varrootNode = treeView1.Nodes.Add(rootPath, Path.GetFileName(rootPath)); LoadFile(rootNode); voidLoadFile(TreeNode node){ foreach(varfile inDirectory.GetFiles(node.Name)) { node.Nodes.Add(file, Path.GetFileName(file)); } foreach(vardir inDirectory.GetDirectories(node.Name)) { varchildNode = node.Nodes.Add(dir, Path.GetFileName(dir)); LoadFile(childNode); } }

上面的是练了个手,接下来我们加载一个大点的数据,一个全国的行政区划表,有省,市 ,县,乡镇四级,一共49000多条数据,数据字段有sid,pid,name。本篇我们主要是看从内存list到UI上,所以加载数据不是重点,可以是数据库,也可以是文件中,最终数据会在内存的list中。

classProvince{ publicstringsid { get; set; } publicstringpid { get; set; } publicstringname { get; set; } }varrootNode = treeView1.Nodes.Add("0", "中国"); LoadProvince(rootNode); voidLoadProvince(TreeNode node){ foreach(varitem inlist.Where(s =