您好、欢迎来到现金彩票网!
当前位置:最新捕鱼棋牌 > 文件分配时间 >

C复制文件我不用线程复制多文件的时候程序会假死但是我用单线程

发布时间:2019-08-09 20:47 来源:未知 编辑:admin

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

  百度知道电脑/网络编程语言/nav

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

  主要我是要用进度条显示总体进度和单个文件的进度,这是我的代码//线程开始启动调用,主方法CopyprivatevoidbackgroundWorker1_DoWork(objectsender,DoWorkEventArgse){Copy(@txtSour...

  谁帮我看看怎么才能在复制多文件的时候不假死,如果用线程,是否能跟原来用的时间一样!展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  虽然你使用了BackgroundWorker,这只能说明你用了一个后台线程,但是貌似你复制文件的过程依然是在一个线程里进行的,没看出来多线程体现在哪儿,如果我说的对的话,那么你这跟不用BackgroundWorker除了不会让ui线程卡死之外并不会对复制文件的操作有任何性能提升如果你使用了多个BackgroundWorker并启用个复制操作就涉及一个很严重的问题就是如何“分流”,也就是把复制很多文件的操作分配到不同的线程中,这一点是提升性能至关重要的,如果你用不同的线程复制同一批文件自然会因为多个线程操作同一文件而遭遇io锁的问题推荐做法:不管使用BackgroundWorker还是Thread,先用一个线程维护要复制文件的列表,也就是用一个线程查找要复制的文件,然后构建一个分配逻辑,新的线程启动时索取要复制的文件路径,复制时在列表中标记“正在复制。。。”,完成后标记“完成”,这样每次启动新线程来复制时自动到文件列表中查找未复制的文件然后进行操作。这样从总体看来就是一个个线程有序逐个复制文件。使用线程池能简化代码,但前面所说的“分流”(分流这个词是我为了方便理解在此杜撰的,不用去搜,正式的说法应该叫任务分配)的逻辑得你自己写,这是多线程的核心,如果你完全掌握了,那么多线程操作就掌握一半了参考资料:

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

http://kentdale-scouts.com/wenjianfenpeishijian/799.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有