2013-05-27 4 views
6

Метод ReportProgress принимает 2 параметра. Один - это int и пользовательское состояние. Я передаю некоторые строковые параметры в метод для некоторых процессов и не нуждаюсь в int.Справочный рабочий отчетПрогрессный метод

Есть ли способ пропустить передачу первого int, не имея избыточности для вызова метода прогресса отчета с помощью ReportProgress([randomInt], "MyString")? Только для очистки кода.

+1

Неа, J ust pass 0. Или const, называемый 'dummyProgress', если вы предпочитаете. :) –

+1

Есть ли способ создать как метод переопределения? Этот «бесполезный параметр» вещь немного подшучивает =) –

+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); 
    } 
} 

Тогда вы сможете сделать сделать следующее (до тех пор, пока параметр НЕ является ИНТ, в противном случае нормальная ReportProgress(int) будет называться):

_backgroundWorker.ReportProgress("Test"); 
1

Вы можете создать метод расширения, который скрывает первый параметр (просто вызывает настоящий метод с 0)

+0

Как бы вы создали метод расширения? –

2

ReportProgress метод должен принять Int, так как это повышает ProgressChanged событие, которое имеет параметр ProgressChangedEventArgs, который, в свою очередь, имеет свойство ProgressPercentage.

Просто передайте 0 методу или, как предполагает RobSiklos, написать метод расширения, который будет вызывать ReportProgress с 0.

Смежные вопросы