C#从另一个类向backgroundworker报告进度

时间:2018-10-07 02:08:10

标签: c# backgroundworker

我正在将文件上传到Filehost。我正在使用listgridview显示文件名及其大小,以及每个单独文件的进度栏,如下所示。 List Grid View. 我正在以课堂方式进行上传。

从主类中,我正在调用openload类以提供文件位置。在openload上载类中,我检查身份验证并获取上载地址,并将该上载地址发送到另一个名为Upload的类中,该类执行分段/表单数据上载。

一切正常,无需使用进度条。但是我想实现进度条才能成功运行。

我在主类中使用backgroundworker调用openload函数并提供文件位置。

        private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            if (!string.IsNullOrEmpty(File))
            {
                var Link = new FileHost.Openload();
                OutputBox.Text = Link.Upload(File);
            }
        }

然后转到openload类,在其中检查身份验证并为上载类提供上载URL。

                Upload Upload = new FileHost.Upload();
                Thread Uploading = new Thread(() =>
                {
                    UploadResult = Upload.UploadFilesToRemoteUrl(UploadURL, FileName, null);                        
                });
                Uploading.Start();

在我的Upload类中,它以流格式执行上传。

            using (var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read))
            {
                var buffer = new byte[1024];
                int totalReadBytesCount = 0;
                var bytesRead = 0;
                while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                {
                    memStream.Write(buffer, 0, bytesRead);
                    totalReadBytesCount += bytesRead;
                    var progress = totalReadBytesCount * 100.0 / fileStream.Length;
                }
            }

它还提供了上传进度。但是我想为backgroundworker reportprogress提供进步的价值。 但是我不能叫主要班级的背景工来上班,即上课。

在其他类中是否有任何方法或委托来调用主类的背景工作人员。

0 个答案:

没有答案