网上所能找到的例子中设定范围SetRange()都是固定值,但实际上各个操作(如读写、拷贝等)所需的时间差异是很大的,如何获取操作所需时间?请指点一二,最好有代码段。

解决方案 »

  1.   

    如果要进行读写操作,那么,首先你要得到读写内容的大小(比如:字节数目),然后按照比例设置RANGE,比如,如果字节数为102,400,你的RANGE为0到100,那么,你每读取1,024字节,你的进度条就要走一个单位,就是这样.拷贝操作完全类似,首先得到全部文件的大小,然后除以RANGE的范围,得到进度条走一个单位所需要拷贝的字节数.
      

  2.   

    RANGE一旦设定就不容易改变了,而且也没必要改变,你要做的其实是如何划分滚动条每走一个单位所需要的时间,比如说,你的程序启动开始时比较快,滚动一个单位的时间为1秒,后来你的程序慢了,那么你可以把滚动一个单位的时间设置为两秒.
    对于你的问题,大概可以这么解决:
    RANGE设置为(0, 100)
    服务器动后,得到dwWaitHint,从而得到启动此服务的大概时间T,然后把T除以100,得到每滚动一个单元所需要的时间,你每隔一定的时间读一下此值,比如,这个时候滚动条已经滚动到第30个单元了,此时读取dwWaitHint值为50秒,那么,就用50除以(100-30)得到此时每滚动一个单元所需要的时间,如此循环,这样就可以动态的调整滚动条的滚动速度