问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C#复制文件,我不用线程复制多文件的时候程序会假死,但是我用单线程之后复制时间是原来的两倍,怎么优化

发布网友 发布时间:2022-05-27 11:59

我来回答

3个回答

热心网友 时间:2023-10-20 11:54

虽然你使用了BackgroundWorker,这只能说明你用了一个后台线程,但是貌似你复制文件的过程依然是在一个线程里进行的,没看出来多线程体现在哪儿,如果我说的对的话,那么你这跟不用BackgroundWorker除了不会让ui线程卡死之外并不会对复制文件的操作有任何性能提升

如果你使用了多个BackgroundWorker并启用个复制操作就涉及一个很严重的问题就是如何“分流”,也就是把复制很多文件的操作分配到不同的线程中,这一点是提升性能至关重要的,如果你用不同的线程复制同一批文件自然会因为多个线程操作同一文件而遭遇io锁的问题

推荐做法:不管使用BackgroundWorker还是Thread,先用一个线程维护要复制文件的列表,也就是用一个线程查找要复制的文件,然后构建一个分配逻辑,新的线程启动时索取要复制的文件路径,复制时在列表中标记“正在复制。。。”,完成后标记“完成”,这样每次启动新线程来复制时自动到文件列表中查找未复制的文件然后进行操作。这样从总体看来就是一个个线程有序逐个复制文件。使用线程池能简化代码,但前面所说的“分流”(分流这个词是我为了方便理解在此杜撰的,不用去搜,正式的说法应该叫任务分配)的逻辑得你自己写,这是多线程的核心,如果你完全掌握了,那么多线程操作就掌握一半了

参考资料:http://msdn.microsoft.com/zh-cn/library/ms173178.aspx

热心网友 时间:2023-10-20 11:55

不是,要用多线程,参考System.Threading这个命名空间
你可以多开一个线程在里面复制文件。因为文件复制是个连续过程,然后WINDOWS又有个消息循环。一个函数就可以把它卡在那里了。

热心网友 时间:2023-10-20 11:55

单单利用现成不不能解决问题的,应该再加上委托,异步执行才能解决你的问题,还有COPY的速度基本不会有太大变动,因为无论你怎么写都是在调用系统的API所以速度基本都差不多了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 东莞市英赛特衣架有限公司怎么样? 「星期一」全身热身运动–激活身体的*,适合所有运动前做 北京英赛特贸易有限责任公司怎么样? 人体有强大的“自愈力”,有些病不吃药也能治好,如何激活人体的自愈力呢? 最有效激活人体活力的运动是什么? cpu单线程优化软件 我的世界海底神殿透明章鱼怎么弄? 今天打开机箱内布满灰尘,电脑清洁直接喷行吗,用小毛刷刷掉硬件灰尘会不会刷坏? 有什么方法可以激活身体的免疫力 激活身体的热身运动该怎么练? 我在电脑光驱里放了一张碟怎样把它里面的DVD移动到可移动磁盘上 熨斗松下挂烫机NI-FS400插电怎么冒烟 烟灰蛸的身体为什么大多都是透明的? QTDownLoad和java是什么来的? 龙岩下面有多少个县? 郫县水电七局二分局龚嘴水库沙湾公墓,迁坟事宜怎么办? 爱家乡,爱漳平的作文 什么是熟田七 手机sd卡每次连接电脑后都显示system文件,打开后有java,QTDownLoad,删了再插入还是有,什么毛病啊? 漳平市利泰再生资源有限责任公司怎么样? 迟到和早退的保证书怎么写 如何激活身体勉逸系统 DVD光驱的盘符图标变成是可移动磁盘图标是怎么回事 c++单线程内部会不会编译器优化 免疫力差百病生,激活免疫力,最简单有效的方法是什么? 怎么把DVD影碟里的视频复制到移动硬盘上? 早退,缺课,的保证书1000字 单线程环境下volatile与synchronized是否有必要 色彩艳丽的动物 买DVD刻录光驱还是移动硬盘好? 吃什么激活身体生长激素 利用虹软免费SDK做测试,发现人脸库多线程优化效果相对于单线程提升不大,该如何解决? java线程优化问题 东莞英赛特信息咨询服务有限公司怎么样? 怎么把DVD里的谍放电脑里放,我的意思是光驱的,移动到我的电脑看,不用光驱看,顺便推个免费视屏转换器 现在游戏是单核优化多还是多线程优化多 扬州英赛特化工技术有限公司怎么样? 不迟到上班睡觉早退要写保证书,请问要怎么写啊?很急 天下辉煌和辉煌搏击哪个好 电脑的cpu做到一定程度,单线程速度就到头了吗?