Background worker - report progress with string array

后端 未结 3 1221
终归单人心
终归单人心 2020-12-16 20:16

I need to return multiple STRING values from my backgroundworker in each loop, so I tried to use ReportProgress second parameter as string array. Example of code:

         


        
3条回答
  •  离开以前
    2020-12-16 20:42

    I've solved a similar issue by adding a new ProgressChanged event listener to your background worker and block passing to the next loop if ProgressChanged not fired:

    bool progressed;
    
    backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
    string[] workerResult = new string[2];
    for (int i = 0; i < 2; ++i) {
        progressed=true;
    
        workerResult[0] = "this string";
        workerResult[1] = "some other string";
        backgroundWorker1.ReportProgress(i, workerResult);
        while (progressed)
        {
           //you can add a thread sleep 
        }
    }
    
    
    void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
         progressed = false;
    }
    

提交回复
热议问题