c # сообщить о прогрессе фоновому работнику из другого класса - PullRequest
0 голосов
/ 07 октября 2018

Я работаю над загрузкой файла на filehost.Я использую listgridview, чтобы показать имя файла и его размер, а также индикатор выполнения для каждого отдельного файла, как показано ниже. Просмотр таблицы списка. Я выполняю загрузку в классной форме.

Из основного класса я вызываю класс openload, чтобы указать местоположение файла.В классе загрузки openload я проверяю аутентификацию, получаю адрес загрузки и отправляю этот адрес загрузки другому классу с именем Upload, который выполняет загрузку multipart / form-data.

Все работает без использования индикатора выполнения.Но я хочу, чтобы индикатор выполнения работал успешно.

Я использую 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где он проверяет аутентификацию и предоставляет ссылку для загрузки класса загрузки.

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

в моем классе загрузки он выполняет загрузку в потоковом формате.

            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;
                }
            }

также обеспечивает прогресс загрузки.но я хочу предоставить ценность прогресса фоновому отчету о прогрессе.но я не могу вызывать фонового работника основного класса для рабочего класса, т.е. загружать класс.

есть ли метод или делегат для вызова фонового работника основного класса в другом классе.

...