积极答复者
Serialport 和 ProgressBar

问题
-
之前使用Serialport来传输文件,一切正常。
现在想加上ProgressBar来显示文件传输的进度,但是一直没法做到这点,ProgressBar一直没有任何显示。
在BackGroundWorker内,用的是Serialport.Write(Byte[], Int32, Int32)传输文件,不过程序是直接传完,然后ProgreeBar却是一动未动。
同样也使用过:
Private Sub BackgroundWorker1_ProgressChanged(sender As System.Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub但还是一样的情况,在想是不是Serialport在传输的时候程序无法判断还有多久能传完或传输了多少?又或者在Serialport.Write的方法时候,只有等它全部写完才会进入下一个工作点,因此直接使用Progresschanged事件不行?
还打算试一下将文件分成几等分传输,然后每经过一等分ProgressBar进度条增加一段,但是Serialport.Write(Byte[], Int32, Int32)这个方法中,后两个值的和不能大于第一个,所以目前还没想到如何分等份传文件,另外也不清楚假使用了分等份传输会又出现什么情况,如文件传输出错或者不成功?
希望大家能给我些自己的观点和想法,或者已经有过类似的经验,请指导我下,谢谢!
答案
-
好的!
还是使用Serialport.Write(Byte[], Int32, Int32)方法,然后把要传输的文件分成你想要的等份,progressbar的最大值设置成传输文件的长度,用For语句,每传完一个等份,使用progressbar的performstep方法完成同步进度条。
在backgroundworker里面不能直接调用progressbar,可以直接加上语句:CheckForIllegalCrossThreadCalls = Fasle
- 已标记为答案 raphaelkino 2013年8月6日 9:32
全部回复
-
Hi,
很高兴你的问题已经解决了。
如果你能够把你的解决办法分享出来并标记为答案的话,就能够帮助更多拥有类似问题的人了。
Regards.
Carl Cai
MSDN Community Support | Feedback to us
Develop and promote your apps in Windows Store
Please remember to mark the replies as answers if they help and unmark them if they provide no help. -
好的!
还是使用Serialport.Write(Byte[], Int32, Int32)方法,然后把要传输的文件分成你想要的等份,progressbar的最大值设置成传输文件的长度,用For语句,每传完一个等份,使用progressbar的performstep方法完成同步进度条。
在backgroundworker里面不能直接调用progressbar,可以直接加上语句:CheckForIllegalCrossThreadCalls = Fasle
- 已标记为答案 raphaelkino 2013年8月6日 9:32