日期:2014-05-17  浏览次数:20715 次

backgroundWorker中,关于ReportProgress,一定需要先强制转换吗?
form中创建了一个backgroundWorker1,在backgroundWorker1_DoWork中,如果需要报告进度,调用ReportProgress(),一定需要对sender进行强制转化吗?
C# code
BackgroundWorker bgw = (BackgroundWorker)sender;
            if (!bgw.CancellationPending)
            {
                Thread.Sleep(100);
                bgw.ReportProgress((int)((i / totalAmount) * 100), i);
            }

C# code

backgroundWorker1.ReportProgress((int)((i / totalAmount) * 100), i);


实际中,两种都可以用,这两种写法随便哪个都可以么?有什么区别,请各位指点。

------解决方案--------------------
BackgroundWorker 是定义在方法中的,就必须强转sender了。
如果定义成类的字段或属性,就可以直接访问。
两者都是正确的使用方法。

还有ReportProgress的第一个参数并非百分比,如我1楼所说。