我在使用BackgroundWorker进行读文件的时候,有一个进度条,但是每每进度条到80%左右的时候,结果已经出来,然后进度条才飘到100%
以下是我进行计算进度的一段代码,帮忙看看那里有问题?            FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
            int bufferSize = 131072; // 缓冲区大小
            byte[] buff = new byte[bufferSize];
            long offset = 0;
            int length = 0;
            double progress = 0;
            double blockpro = fs.Length / bufferSize;
            while (offset < fs.Length)
            {
                 threadWorker0.ReportProgress((int)progress);
                 //读文件操作
                 offset += bufferSize;
                 progress += 100 / blockpro;
            }之前用的方法是 progress = (int)offset/fs.Length*100;但是也是这样的情况,求解啊!

解决方案 »

  1.   

    while{}改为do while{}就行了使用while循环会造成最后一次自加运算后无法执行,使用do while能保证再运行一次
      

  2.   

    你在计算结果出来的地方加一句:progress  = 100
      

  3.   

    。。悲剧啊,调试的时候有这样的问题,但是运行.exe文件就可以正常了。。貌似这也算解决吧
      

  4.   

    long a = 10000;
    int b = 1024;
    double c = 100 / (a / b);等于多少呢?这是一个计算机基本常识题。遇到这种问题,你应该写为:long a = 10000;
    int b = 1024;
    double c = 100 / ((double)a / b);
      

  5.   

    顶,可以先观察a / b的值,再观察(double)a / b就知道了