当前位置: 首页 > news >正文

廊坊网站建设廊坊cms开源系统

廊坊网站建设廊坊,cms开源系统,代理ip免费软件,山西省煤炭厅基本建设局网站由于WinForm的UI是绘制的#xff0c;所以在加载大量数据数据时会有一定的延时#xff0c;本篇就讨论几个减少延时的方法。在加载有规律数据时#xff0c;可以考虑用递归#xff0c;简单方便快捷来加载数据#xff0c;如下#xff0c;把一个文件夹下的所有文件或文件夹加载…由于WinForm的UI是绘制的所以在加载大量数据数据时会有一定的延时本篇就讨论几个减少延时的方法。在加载有规律数据时可以考虑用递归简单方便快捷来加载数据如下把一个文件夹下的所有文件或文件夹加载到树形菜单上以树形展示代码实现如下。var rootPath  d://abc/bcd; var rootNode treeView1.Nodes.Add(rootPath, Path.GetFileName(rootPath)); LoadFile(rootNode);void LoadFile(TreeNode node) {foreach (var file in Directory.GetFiles(node.Name)){node.Nodes.Add(file, Path.GetFileName(file));}foreach (var dir in Directory.GetDirectories(node.Name)){var childNode node.Nodes.Add(dir, Path.GetFileName(dir));LoadFile(childNode);} }上面的是练了个手接下来我们加载一个大点的数据一个全国的行政区划表有省市 县乡镇四级一共49000多条数据数据字段有sidpidname。本篇我们主要是看从内存list到UI上所以加载数据不是重点可以是数据库也可以是文件中最终数据会在内存的list中。class Province {public string sid { get; set; }public string pid { get; set; }public string name { get; set; } }var rootNode  treeView1.Nodes.Add(0, 中国); LoadProvince(rootNode);void LoadProvince(TreeNode node) {foreach (var item in list.Where(s s.pid node.Name)){var childNode node.Nodes.Add(item.sid, item.name);LoadProvince(childNode);} }如果直接用递归加载速度太慢为了加快速度就得并行加载了于时就增加Task.Run因为是大多线程中异步操作UI所以还得用this.Invoke代码如下。运行会看到速度显然快了不了但还不是理想结果理想是无感。var rootNode treeView1.Nodes.Add(0, 中国); LoadProvince(rootNode); void LoadProvince(TreeNode node) {Task.Run(() {foreach (var item in list.Where(s s.pid node.Name).OrderBy(s s.sid)){this.Invoke(() {node.Nodes.Add(item.sid, item.name);if (node.Level 0){node.Expand();}});}foreach (TreeNode childNode in node.Nodes){LoadProvince(childNode);}}); }后来又想到可不可以把树形菜单给序列化窗体启动时返序列化回来用BinaryFormatter来实现现在官方不鼓励用首先TreeView不支持序列化只能换成TreeView的Nodes属笥来序列化。窗体启动时它的加载速度与上面的异步递归差不多没有明显改善。即然一次加载大量数据不行就再换一下思路一次加载少一些因为是UI用户肯定有交互利用用户的交互来触发加载他想要看的数据这个少量多少为好对于树形控件来说如果想看不出来那就是两级用户点开第二级的时候再加载两级这样用户始终感觉用数据。private void Form1_Load(object sender, EventArgs e) {var rootNode treeView2.Nodes.Add(0, 中国);LoadProvince(rootNode, 1);this.treeView2.BeforeExpand new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView2_BeforeExpand); } private void treeView2_BeforeExpand(object sender, TreeViewCancelEventArgs e) {if (e.Node ! null e.Node.Nodes ! null e.Node.Nodes.Count 0){e.Node.Nodes.Clear();LoadProvince(e.Node, 1);} }性能的问题永远没有最好也没有一种方式能就通吃各种场景得一个个换思路来解决不过上面的思路肯定不是最好的如果你有一次性加载全部更快的解决方案请告我我实现然后再分享给更多的人。
http://wiki.neutronadmin.com/news/54117/

相关文章:

  • 以网站名为后缀的邮箱怎么做澄城县城乡建设局网站
  • 在那做网站东莞网络营销推广公司
  • 武安建设局网站一锅汤资源网站建设大全
  • 电商网站开发面试题网站建设 兼职 外包
  • 中山全麦网站建设建设网站查询密码
  • 怎样在自己网站上传产品大型网站维护费一年多少
  • 网站素材图片美容美发网站模板
  • 网站设置快捷方式合肥网站关键词优化
  • 网站建设 策划网页无法打开
  • 网站编辑的栏目怎么做中国现代公路建设有限公司网站
  • 新城区网站建设外贸网站模板设计
  • 传奇网站如何建设discuz是什么东西
  • 高端网站建设费用情况山东省工程建设招标信息网站
  • 企业如何通过地方网站宣传网站网站服务器一年的费用
  • 邢台网站维护具体的网站建设
  • 网站建设需要几个阶段网站上面的体验卡怎么做
  • vs2013做网站保存的格式制作书签的作文
  • 广东长海建设工程有限公司网站制作和维系一个网站的费用
  • 深圳电信网站备案做网页价格
  • 网站无法上传图片wordpress获取评论用户名
  • 做国内打不开的网站吗网站站建设建技设术技术
  • 企业网站建站公司郑州吉林省吉林市昌邑区
  • 如何搭建网站教程视频网页制作基础教程第二版答案
  • 工业网站开发商wordpress女装小说
  • 中国建设网官方网站企业网银愿意做cps的网站
  • 永久免费ppt下载网站网站服务器建设教程视频
  • 5网站建设公司可以写代码的网站
  • 网站建设税率多少站长之家ip地址归属查询
  • 烟台网站建设托管如何替换网站ico图标
  • 优惠券领取网站开发郑州做响应式网站