6

The ReportProgress method takes in 2 parameters. One's an int and one's a user state. I am passing some string parameters into the method for some processsing purposes and have no need for the int.

Is there a way to omit passing the first int without having the redundancy to call the report progress method with a ReportProgress([randomInt], "MyString")? Just for code cleaning purposes.

4

3 回答 3

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");
于 2013-05-27T14:37:08.983 回答
2

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

只需将 0 传递给该方法,或者如 RobSiklos 建议的那样,编写一个将ReportProgress使用 0 调用的扩展方法。

于 2013-05-27T14:33:49.747 回答
1

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

于 2013-05-27T14:33:01.243 回答