大神们进啊 , 关于线程和进度条同步的问题。。。
这是一个多线程的程序 ,线程中的操作有可能需要大量的等待时间,于是设置了一个进度条来显示当前任务完成的百分比 ,使得用户可以看到大概还需要多久可以完成。
但是却遇到了一个问题, 就是该例中的线程执行代码究竟需要多少时间是不确定的。
无法计算出线程执行完任务究竟需要多少的时间。
此种情况如何设置进度条与线程的同步 ?
在网上找了很久想找出一个进度条同步线程的例子, 结果看到的都是一些无聊的人写个for循环,然后在里面执行i++ ,然后sleep之后来显示个进度条给人看. 感觉真的没有多大意义.
------解决方案--------------------在网上找了很久想找出一个进度条同步线程的例子, 结果看到的都是一些无聊的人写个for循环,然后在里面执行i++ ,然后sleep之后来显示个进度条给人看. 感觉真的没有多大意义.
这是最精简的结构了,这个如果你觉得没用说明你根本还是没理解。
------解决方案--------------------你自己都不知道总共要花多少时间...你叫程序怎么告诉用户要花多少时间呢?怎么能够精确显示进度呢,不行的话,就是一个大概的问题而已,不用纠结是不是准确,你自己估计一个时间,以这个时间作为参照就行了,或者分段,完成一段就是完成一定百分比,只能这样了
------解决方案--------------------回复等家分。祝楼主新年快乐
------解决方案--------------------不知道总体时间的话是无法达到你的要求的,只能按你说的慢慢显示了
------解决方案--------------------下载没分了 进来找10分可用分 你们继续
还有就是 你如果知道任务的进度 可以在代码里面设置任务的进度 等线程运行完成 然后再填满
利用时间 这就根本不合理
谁也不知道什么时候完成 既然是任务的进度条 就按照任务的进度设置
------解决方案--------------------
这可能是你自己完全没有转过弯来!
总预估时间是变动的,当前已经花费的时间也是变动的。当前花费时间就好像要“追赶”总预估花费时间似地。
对于一个进度条而言,它的MaxValue是变动的,它的Value也是变动的。
你自己好好动动你的脑筋吧!
------解决方案--------------------
我给你打个比方,比如说你刚刚下班正在回家路上,你之后会遇到什么事情耽误时间是“无人知道”的吧?
但是你“已经”走了多少路程是知道的吧?!
------解决方案--------------------同求
------解决方案--------------------你自己估计哪一步会用百分之几的时间来确定吧
------解决方案--------------------
你不能知道读取和处理了多少字节吗?既然总字节数已经确定了,你当然可以通过已处理的字节数来确定当前的进度(注意,这个进度和时间进度是不同的概念),除非你要全部字节读出来做操作,那也一样,改变思路:
准备阶段:读文件(总大小,当前读取都知道吧)
处理阶段:操作文件内容(看你具体的操作,看可不可以知道进度)
进度阶段:保存文件(总大小,当前写入都知道吧)
------解决方案--------------------其实就是每个操作看作独立的进度,而不要把整个任务放在一个进度内(虽然用分段的方式也可以),这样不就可以显示读文件的进度了?也可以显示处理文件内容的进度了?还可以显示保存文件的进度了,当然,如果你把总体看作100,三个过程各占三分之一,这种分段方式也可以