后台工作者ReportProgress方法

时间:2013-05-27 14:26:36

标签: c# backgroundworker

ReportProgress方法包含2个参数。一个是int,一个是用户状态。我将一些字符串参数传递给方法进行一些处理,并且不需要int。

有没有办法省略传递第一个int而没有冗余来调用ReportProgress([randomInt], "MyString")的报告进度方法?仅用于代码清理目的。

3 个答案:

答案 0 :(得分:4)

您可以为BackgroundWorker创建扩展方法,如下所示:

public static class BackgroundWorkerExt
{
    public static void ReportProgress(this BackgroundWorker self, object state)
    {
        const int DUMMY_PROGRESS = 0;
        self.ReportProgress(DUMMY_PROGRESS, state);
    }
}

然后您将能够执行以下操作(只要参数不是int,否则将调用普通的ReportProgress(int)):

_backgroundWorker.ReportProgress("Test");

答案 1 :(得分:2)

ReportProgress 方法需要使用int,因为它会引发ProgressChanged事件,该事件具有参数ProgressChangedEventArgs,而该参数又具有属性ProgressPercentage

简单地将0传递给方法,或者像RobSiklos建议的那样,编写一个将ReportProgress调用为0的扩展方法。

答案 2 :(得分:1)

您可以创建一个隐藏第一个参数的扩展方法(只使用0调用实际方法)