专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

WinForm(九)UI加载大数据

  由于WinForm的UI是绘制的,所以在加载大量数据数据时会有一定的延时,本篇就讨论几个减少延时的方法。
  在加载有规律数据时,可以考虑用递归,简单方便快捷来加载数据,如下,把一个文件夹下的所有文件或文件夹加载到树形菜单上,以树形展示,代码实现如下。varrootPathd:abcbcd;varrootNodetreeView1。Nodes。Add(rootPath,Path。GetFileName(rootPath));LoadFile(rootNode);voidLoadFile(TreeNodenode){foreach(varfileinDirectory。GetFiles(node。Name)){node。Nodes。Add(file,Path。GetFileName(file));}foreach(vardirinDirectory。GetDirectories(node。Name)){varchildNodenode。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;}}
  varrootNodetreeView1。Nodes。Add(0,中国);LoadProvince(rootNode);voidLoadProvince(TreeNodenode){foreach(variteminlist。Where(ss。pidnode。Name)){varchildNodenode。Nodes。Add(item。sid,item。name);LoadProvince(childNode);}}
  如果直接用递归加载,速度太慢,为了加快速度,就得并行加载了,于时就增加Task。Run,因为是大多线程中异步操作UI,所以还得用this。Invoke,代码如下。运行,会看到,速度显然快了不了,但还不是理想结果,理想是无感。varrootNodetreeView1。Nodes。Add(0,中国);LoadProvince(rootNode);voidLoadProvince(TreeNodenode){Task。Run((){foreach(variteminlist。Where(ss。pidnode。Name)。OrderBy(ss。sid)){this。Invoke((){node。Nodes。Add(item。sid,item。name);if(node。Level0){node。Expand();}});}foreach(TreeNodechildNodeinnode。Nodes){LoadProvince(childNode);}});}
  后来又想到,可不可以把树形菜单给序列化,窗体启动时,返序列化回来,用BinaryFormatter来实现(现在官方不鼓励用),首先TreeView不支持序列化,只能换成TreeView的Nodes属笥来序列化。窗体启动时,它的加载速度与上面的异步递归差不多,没有明显改善。
  即然一次加载大量数据不行,就再换一下思路,一次加载少一些,因为是UI,用户肯定有交互,利用用户的交互来触发加载他想要看的数据,这个少量多少为好,对于树形控件来说,如果想看不出来,那就是两级,用户点开第二级的时候再加载两级,这样用户始终感觉用数据。privatevoidForm1Load(objectsender,EventArgse){varrootNodetreeView2。Nodes。Add(0,中国);LoadProvince(rootNode,1);this。treeView2。BeforeExpandnewSystem。Windows。Forms。TreeViewCancelEventHandler(this。treeView2BeforeExpand);}privatevoidtreeView2BeforeExpand(objectsender,TreeViewCancelEventArgse){if(e。Node!nulle。Node。Nodes!nulle。Node。Nodes。Count0){e。Node。Nodes。Clear();LoadProvince(e。Node,1);}}
  性能的问题永远没有最好,也没有一种方式能就通吃各种场景,得一个个换思路来解决,不过上面的思路肯定不是最好的,如果你有一次性加载全部更快的解决方案,请告我,我实现,然后再分享给更多的人。

纯视觉智能驾驶会成为电动汽车的光刻机嘛?算盘永远打不出互联网,电动车是智能汽车的基础,王传福在2018年的潘谈会上说,他极度看好智能汽车未来,断定智能汽车是下一个风口。那一年,国内造车新势力蜂拥而至。蔚来的ES8威马汽车人工智能有助于更快地发现不公平的算法人工智能系统一直在部署,但可能需要数月甚至数年才能弄清楚它们。一群人工智能和机器学习专家正在发起一项新的赏金竞赛,他们希望这将加快发现这些嵌入的过程。该竞赛从网络安全中的漏洞赏金中整整一年过去了,亚马逊家用机器人Astro还在憋大招?我们相信,未来每个人的家中,都会拥有AI家用机器人,如同今天的家用电器。AI机器人可以帮我们干活帮我们看家帮我们陪孩子聊天,将我们从日常生活的琐事中解脱出来我们也相信,未来的AI家买扫地机器人必须知道的3大小技巧稿源中关村在线扫地机器人绝对是最值得买的懒人神器之一了,而对于用户来说,如何买合适的扫地机器人和如何正确使用扫地机器人是非常的重要的,学会如何选择和如何正确使用扫地机器人,不仅能让第二篇未来的人生由你抉择作者廖俊华第二篇未来人生由你抉择我们的生命是一趟旅程,人生的选择,有许多条道路可以选择,你该如何选择过好你的这一生呢?你总是把梦想留给未来,旅行留到下次,想做的事情留到以后,然后在本该是未来腾讯红杉商汤,集体落子成姆斯特丹文丨刘燕秋来源丨投中网提到成都,人们的印象往往是宜居的网红城市,洋气的潮流之都,但那只是这座城市外显的一面。最近国产电热毯在欧洲火了,助推背后的成都彩虹电器市值翻了一倍,人们这才知红米K60Pro继续发挥性能优势,2K屏骁龙8Gen2,2亿主摄是亮点关注红米的用户都清楚,近几年定位全面升级,逐渐向小米靠拢,Note系列虽然定位千元机,但早就用上了120瓦有线快充。K系列机型也不甘示弱,在第一时间也用上了4纳米芯片,屏幕分辨率也今日全国尿素出厂价格2022年10月21日哈喽,大家好!这里是化肥价格行情!关注我每天看最新尿素复合肥磷铵钾肥价格行情!今天(2022年10月21日)下面是今日国内最新尿素价格行情!今日国内尿素价格继续下滑,幅度在2050闹剧上演不完,黄金下跌不止前情提要国际黄金价格,在今年已经连续下跌了7个月。自从2019年,经济引擎开始减速衰退以来,黄金分别在2020年8月和2022年3月,到达过2000美元盎司的高点,咱们国内价格也经六大国有银行齐发公告意在告诉全社会什么?作者莫开伟系中国知名财经作家16日晚,工行农行建行中行交行以及邮储银行等六大国有银行齐发公告,披露了今年金融支持实体经济和今年前三季度信贷投放情况,前三季度共新增人民币贷款超9。511月4号!佳能日本官宣将再度涨价11月4号!佳能日本官宣将再度涨价最近,佳能日本再度发布了官方公告,预计会在11月4号再度提高部分产品价格,其中包括了19款可更换镜头相机以及42款镜头以及1款CinemaEOS摄
SQLServer2008数据库实用技术参考例题(9)数据库备份和恢复!!!由于计算机设置的差异,路径根据自己情况进行修改!!!数据库备份和恢复例131例131创建逻辑备份设备EXECspaddumpdeviceDISK,studentbackup,纯国产芯片多点开花,美国将再难阻挡中国芯片前进的脚步继龙芯发布纯国产的服务器芯片之后,近日中科驭数也发布了一款纯国产芯片DPU芯片K2,这将推动国内的数据中心早日用上纯国产的服务器芯片,摆脱对美国服务器芯片的依赖。据报道的信息指中科摊牌了?国内手机厂商扛起中国制造的大旗,被比尔盖茨说准了在华为被卡脖后,不少欧美企业都不忘踩上一脚,公开表态,拒绝和华为继续合作。然而,作为微软的创始人,比尔盖茨则有不同的看法。他表示,打压华为是错误的,最终会推动中国科技的发展,反而会Linux设备驱动之UIO机制一个设备驱动的主要任务有两个1。存取设备的内存2。处理设备产生的中断对于第一个任务。UIO核心实现了mmap()能够处理物理内存(physicalmemory),逻辑内存(logi最快3。65秒破百,光扭矩就有860牛米,轴距近3米,实拍福特电马GT新能源汽车蒸蒸日上,发展迅猛,许多本土品牌的新能源汽车不断涌现,这也让一些老品牌车企自危,于是也紧跟其后带来自己的新能源汽车,以福特为例推出了福特电马2021GT,这款车售价36。为你的App加把信任锁近日,为巩固治理成效,营造共同维护消费者权益的良好环境,工业和信息化部开展了移动互联网应用程序(App)侵害用户权益整治回头看,组织第三方检测机构对违规推送弹窗信息App过度索取权RabbitMQ初步到精通消息中间件介绍第一章消息中间件介绍1。MQ概述MQ全称是MessageQueue,消息的队列,因为是队列,所以遵循FIFO先进先出的原则,它是一种跨进程的通信机制,用于上下游传递消息。在互联网架2022年最好的JavaScript框架是什么?大家好,很高兴又见面了,我是web前端分享,由我带着大家一起关注前端前沿深入前端底层技术,大家一起进步,也欢迎大家关注点赞收藏转发!那么框架是最优框架开发人员可能会在选择应该学习的盘点加密货币多灾多难的2022年2022年大家的日子都不好过,对币圈来说也是多灾多难,多米诺骨牌般的爆了6次大雷。这个行业本身一直是关系迷乱,所以一旦出幺蛾子,就会拉出一长串蚂蚱。让我们先来上一张图,从年中到年末MCHOSE迈从BH288无线耳机拆解,创新双仓设计,两副耳机合二为一随着TWS耳机市场逐渐步入稳定发展阶段,为了提升产品竞争力,许多品牌开始进行大胆创新,突破常规TWS耳机设计,以期望为用户带了更优的使用体验。近期,MCHOSE迈从推出了一款二合一2022年度国内十大科技新闻发布,中国国家太空实验室入选从璀璨的星空到发现几亿年前远古时期人鱼的奥秘,科学家在探索的道路上一路向前。于是,在一代又一代科研工作者的不断努力下,创新成果层出不穷。中国太空实验室的顺利落成标志着中国在航天领域
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网