Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264

Загрузка файла на сервер с использованием BackgroundWorker - отображение прогресса

28.02.2016, 20:38. Показов 4257. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!

Знаю, подобных тем полно, но ответ на свой вопрос я так и не нашел.

Я через протокол SFTP заливаю выбранный файл. Можно ли как-то наладить корректную работу прогресс бара, имея, например, вес файла? То есть - без всякой "визуальной красоты" типа Thread.Sleep. Хочу чтобы реально показывал процент загрузки.

Подскажите пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.02.2016, 20:38
Ответы с готовыми решениями:

Отображение прогресса скачивания файла
Как заставить прогресс бар работать. Например я скачиваю файл из интернета а он показывает сколько осталось. Или я открываю файл тоже...

Скачивание файла, и отображение прогресса
Собственно такой вопрос: скачиваю какой-то файл через IdHTTP (пример нашёл где-то случайно) TFileStream* fs = new...

Отображение прогресса скачивания файла
Доброго, делаю программку по скачиванию файлов с сервера все легально и чисто, в общем имеется три файла я сделал на винформе 3 кнопки и 3...

25
Эксперт .NET
 Аватар для Rius
13377 / 7832 / 1695
Регистрация: 25.05.2015
Сообщений: 23,833
Записей в блоге: 14
29.02.2016, 13:30
Студворк — интернет-сервис помощи студентам
Fedor_Fedorov, нет, не сформировать.
IProgress и await/async в 4.0 нету. Нужен .Net 4.5.

Добавлено через 7 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Fedor_Fedorov
{
    public partial class Form1 : Form
    {
        private TaskScheduler mContextUI;
 
        public Form1()
        {
            InitializeComponent();
            this.mContextUI = TaskScheduler.FromCurrentSynchronizationContext();
 
            Task.Factory.StartNew(() =>
                {
                    int i = 100;
                    while (i-- > 0)
                    {
                        Task.Factory.StartNew(() => { }).ContinueWith(_ => this.progressBar1.Value = i, this.mContextUI);
                        System.Threading.Thread.Sleep(100);
                    }
                });
        }
    }
}
Добавлено через 7 минут
20 строку можно упростить до
C#
1
Task.Factory.StartNew(() => this.progressBar1.Value = i, CancellationToken.None, TaskCreationOptions.None, this.mContextUI);
Работает ( http://blogs.msdn.com/b/pfxtea... 76552.aspx ).
Задача запускается через TaskScheduler в потоке UI. Без использования continuation.
1
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
29.02.2016, 14:04  [ТС]
Rius, к сожалению, что-то вообще не то. Прогресс при нажатии стартует до 100%, а потом в обратную сторону помаленьку.
0
Эксперт .NET
 Аватар для Rius
13377 / 7832 / 1695
Регистрация: 25.05.2015
Сообщений: 23,833
Записей в блоге: 14
29.02.2016, 14:05
Именно то, что в коде написано. Копипасту-то выключите...
0
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
29.02.2016, 14:43  [ТС]
Rius, извините, но я вас не совсем понимаю. Вопрос я задал вообще про backgroundWorker, а вы тут на 2 страницы растянули свою тему.. я понимаю, может быть данный код рабочий, но я не могу его правильно "применить", так как вообще не пойму о чем он. Объясните, пожалуйста, своими словами, не нужно иронии. Спасибо.
0
Эксперт .NET
 Аватар для Rius
13377 / 7832 / 1695
Регистрация: 25.05.2015
Сообщений: 23,833
Записей в блоге: 14
29.02.2016, 16:24
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Fedor_Fedorov
{
    public partial class Form1 : Form
    {
        // Планировщик для синхронизации с потоком UI
        private TaskScheduler mContextUI;
 
        // Конструктор формы
        public Form1()
        {
            InitializeComponent();
            // Получение планировщика из текущего потока (потока UI)
            this.mContextUI = TaskScheduler.FromCurrentSynchronizationContext();
 
            // Запуск новой задачи в потоке, получаемом из ThreadPool, как и в BackgroundWorker
            Task.Factory.StartNew(() =>
                {
                    // Этот блок кода работает в отдельном потоке
                    // Цикл от 100 до 0
                    int i = 100;
                    while (i-- > 0)
                    {
                        // Запуск новой задачи через планировщик потока UI, т.е. запуск задачи в потоке UI
                        Task.Factory.StartNew(() => this.progressBar1.Value = i, CancellationToken.None, TaskCreationOptions.None, this.mContextUI);
                        // Задержка в 100мс, чтобы цикл не пролетал мгновенно
                        System.Threading.Thread.Sleep(100);
                    }
                    // Конец блока кода, выполняющегося в потоке
                });
        }
    }
}
Про лямбды тут: Лямбда - выражения
1
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
29.02.2016, 16:25  [ТС]
Спасибо большое, но сейчас нет возможности проверить. Дома буду, попробую. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.02.2016, 16:25

Отображение прогресса копирования файла
Нужно отобразить прогресс копирования файла из одной папки в другую. При использовании потоков ввода вывода это не составляет труда, т.к....

Отображение прогресса загрузки файла
Как сделать, чтобы во время загрузки файла запускался прогресс бар?

Загрузка файла на ftp с отображением прогресса
Всемм доброго времени суток форумчане с наступающим вас 2013 годом всего счастливого!!!! И вот мой вопрос: Мне нужна программа которая...

Загрузка файла с FTP с отображением прогресса
Всем привет. Задача: Есть форма. На ней два элемента - прогресс бар и кнопка. При нажатии на кнопку, должна начаться закачка файла...

Отображение прогресса скачивания файла не срабатывает во второй раз
Здравствуйте, подскажите почему может не работать прогресс бар? Один раз сработал и всё...(Visual basic 2010) Public Class Form1 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru