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楼所说。