form中创建了一个backgroundWorker1,在backgroundWorker1_DoWork中,如果需要报告进度,调用ReportProgress(),一定需要对sender进行强制转化吗?
BackgroundWorker bgw = (BackgroundWorker)sender;
            if (!bgw.CancellationPending)
            {
                Thread.Sleep(100);
                bgw.ReportProgress((int)((i / totalAmount) * 100), i);
            }backgroundWorker1.ReportProgress((int)((i / totalAmount) * 100), i);实际中,两种都可以用,这两种写法随便哪个都可以么?有什么区别,请各位指点。

解决方案 »

  1.   

    bgw.ReportProgress(i);    就可以了
    这个i是实际值,不是百分比。比如你的进度条设置的1000,report-->1
    他会自动算出1/1000vs提示说的百分比,那是因为进度条默认值是100。这里的提示有点问题。
      

  2.   

    BackgroundWorker 是定义在方法中的,就必须强转sender了。
    如果定义成类的字段或属性,就可以直接访问。
    两者都是正确的使用方法。还有ReportProgress的第一个参数并非百分比,如我1楼所说。