2014-01-26 31 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

在下載時調用它時檢查文件時,您可以調用Progress Changed事件。但是您需要通過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); 
}