2014-01-26 3 views
0

У меня есть рабочий фон, который проверяет список файлов для размера байта и хеша MD5. Когда он проверяет их, я хотел бы, чтобы лейбл сказал Checking 'FileName'.Изменение метки рабочего рабочего на файл

Это мой прогресс изменил событие:

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) 
    { 
     var fileName = Convert.ToString(e.UserState); 

     lblCheckFile.Text = string.Format("Downloading {0}", fileName); 
     pBarFileProgress.Value = e.ProgressPercentage; 
     gbFileProgress.Text = String.Format("Current File Progress: {0} %", e.ProgressPercentage); 
    } 

Я это о том, downloading когда его на самом деле загрузки, но я хотел бы сказать Checking и имеют адаптивный прогресс бар для этого, как хорошо. перед загрузкой.

ответ

2

Вы можете вызвать событие «Прогресс изменено» при проверке файла, кроме вызова его при загрузке. Но вам нужно передать дополнительную информацию через объект UserState, например, указать «Загрузка» или «Проверка» в дополнение к информации о имени файла.

backgroundWorker.ReportProgress(0.5, new {state = "Checking", fileName = "SomeFile.jpg"}); 
//and later when downloading : 
//backgroundWorker.ReportProgress(0.5, new {state = "Downloading", fileName = "SomeFile.jpg"}); 

Тогда в обработчике события:

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) 
{ 
    var userState = (dynamic)e.UserState; 
    var state = userState.state; 
    var fileName = userState.fileName 

    lblCheckFile.Text = string.Format("{0} {1}", state, fileName); 
    pBarFileProgress.Value = e.ProgressPercentage; 
    gbFileProgress.Text = String.Format("Current File Progress: {0} %", e.ProgressPercentage); 
} 
Смежные вопросы