C#中的进度条和后台工作者

Jia*_*n_H 1 c# multithreading backgroundworker progress-bar

目前我正在开发一个需要从Web服务中消耗大量数据的项目.有服务类向服务器发送输入日期并返回结果,由于耗时的过程,需要用户组合进度条和后台工作者向用户显示进程百分比.我已经浏览了很多关于这个主题的示例代码,但仍然无法找到最佳方法.请帮忙,我的代码是关注的,

private  MyCollection[] callWebService(string[] Inputs, string method)
{
    List<string> results = new List<string>();
    string fiel dNames = ""; // todo - fix this if nothing left in loop
    int sizeOfArray = 500;
    for (int i = 0; i < Inputs.Length; i = i + sizeOfArray)
    {
        string[] outputRecords;
        int errorCode;
        string errorString;
        string[] thisFiveHundred = createSubArray(Inputs, i, sizeOfArray);


        iq.NameValuePair[] namevaluepairs = new iq.NameValuePair[0];
        fieldNames = iqOfficeWebservice.BatchStan(method, thisFiveHundred, null, "",        out outputRecords, out errorCode, out  errorString);
        results.AddRange(outputRecords);
    }
    results.ToArray();
    IAddress[] formattedResults = convertStringsToInputs(fieldNames, results);
    return formattedResults;
}
Run Code Online (Sandbox Code Playgroud)

Adi*_*dov 8

    private void cmdButton_Click(object sender, EventArgs e)
    {
        BackgroundWorker worker = new BackgroundWorker();
        worker.WorkerReportsProgress = true;
        worker.DoWork += new DoWorkEventHandler(worker_DoWork);
        worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
        worker.RunWorkerAsync();
    }

    private void worker_DoWork(object sender, DoWorkEventArgs e)
    {
        BackgroundWorker worker = sender as BackgroundWorker;

        for (int i = 0; i < 101; i++)
        {
            worker.ReportProgress(i);
            System.Threading.Thread.Sleep(1000);
        }
    }

    private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        lblProgress.Text = ("Progress: " + e.ProgressPercentage.ToString() + "%");
    }
Run Code Online (Sandbox Code Playgroud)

其他信息可以在这里找到.