Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для Fenix78563
165 / 11 / 4
Регистрация: 17.11.2015
Сообщений: 92

Использование ProgressChanged при загрузке

01.01.2016, 12:58. Показов 913. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, форумчане.
имеется код:
C++
1
2
3
4
5
6
7
8
9
private: System::Void backgroundWorker1_DoWork(System::Object^  sender, System::ComponentModel::DoWorkEventArgs^  e) 
         {
             URLDownloadToFile(0, L"http://mcn-l.esy.es/mcn/0046b.zip", L"C:\\Games\\mcl\\Downloads\\0046b.zip",0,0);
         }
private: System::Void backgroundWorker1_ProgressChanged(System::Object^ sender, ProgressChangedEventArgs^ e)
         {
             int a = e->ProgressPercentage;
             if (a!= progressBar1->Value) {progressBar1->Value=a;}
         }
все скачивается, но прогресс бар мертв =(, помогите пожалуйста его оживить
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.01.2016, 12:58
Ответы с готовыми решениями:

Использование глобальных полей класса. Переменная не меняется при загрузке формы
Добрый день! При загрузке формы меняю глобальную переменную. Но она не меняется. В чем ошибка? using System; using...

Нужен ответ простой - как запретить использование SHIFT при загрузке ?
Нужен ответ простой - как запретить использование SHIFT при загрузке ? Спасибо бол.

Компьютер перезагружается при загрузке виндовс а также при загрузке с liveCD (на любом носителе)
При включении компьютера появляются варианты загрузки при выборе любого из них система перезагружается, вставляю ливСД (от зверя) (на...

9
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18234 / 14148 / 5366
Регистрация: 17.03.2014
Сообщений: 28,840
Записей в блоге: 1
01.01.2016, 21:06
Fenix78563, событие ProgressChanged класса BackgroundWorker срабатывает только если программист явно вызывает метод ReportProgress. Если ты используешь WebClient для скачивания файлов, то нужно подписаться на его событие DownloadProgressChanged и использовать Async версии методов. Т.к. обработчик данного метода будет срабатывать не в UI потоке, то для обновления прогресса нужно будет использовать Control.Invoke().
1
 Аватар для Fenix78563
165 / 11 / 4
Регистрация: 17.11.2015
Сообщений: 92
02.01.2016, 07:35  [ТС]
OwenGlendower, Спасибо, а как в этом случае получить прогресс в URLDownloadToFile, Вроде функция есть IBindStatusCallback, но сколько не шарил везде +100500 строк кода, есть какой нибудь вариант с коротким кодом?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18234 / 14148 / 5366
Регистрация: 17.03.2014
Сообщений: 28,840
Записей в блоге: 1
02.01.2016, 12:36
Fenix78563, короткий вариант есть. Используй класс WebClient и его событие DownloadProgressChanged.
0
 Аватар для Fenix78563
165 / 11 / 4
Регистрация: 17.11.2015
Сообщений: 92
02.01.2016, 14:00  [ТС]
OwenGlendower, спасибо за совет, но он качает некоррекно, постоянно сбивается при загрузке, чего нет с urlDownloadToFile
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18234 / 14148 / 5366
Регистрация: 17.03.2014
Сообщений: 28,840
Записей в блоге: 1
02.01.2016, 16:59
Fenix78563, что значит "сбивается"? Можешь привести полный пример проблемного кода? И еще - прокси в сети есть?
0
 Аватар для Fenix78563
165 / 11 / 4
Регистрация: 17.11.2015
Сообщений: 92
02.01.2016, 17:28  [ТС]
OwenGlendower, он качает файлы примерно на 30 мб, и все это происходит примерно в течении 3-х потоков, при завершении любого он иногда думает что файл закачан полностью, как результат - битый файл

Добавлено через 1 минуту
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
36
37
38
39
40
41
42
43
44
45
46
47
if(ver != fileName)
{
    if (!File::Exists (dwg+"\\Downloads"+fileName))
    {
        try 
        {
            Uri^ adr = Uri1;
            client->DownloadFileAsync(adr, fileName);
            label1->Text = L"Идет загрузка";
        }   
        catch (WebException^ e)
        {
            try 
            {
                Uri^ adr2 = Uri2;
                client->DownloadFileAsync(adr2, fileName);
            }
            catch (WebException^ e)
            {
                label1->Text = L"Необходима установка";
                MessageBox::Show(
                "Не удалось загрузить файл\nПроверьте подключение к сети или попробуйте позднее.",
                "Ошибка!",
                MessageBoxButtons::OK,
                MessageBoxIcon::Error);
            }
        }
    }
    else 
    {
        progressBar1->Value = 0;
        label1->Text = L"Загружено!"; 
        this->progressBar1->Style = System::Windows::Forms::ProgressBarStyle::Marquee;
        label1->Text = L"Обработка";
        progressBar1->Value = 10;
        if (Directory::Exists(dwg+"\\Profiles"+this->comboBox1->SelectedItem->ToString())) {Directory::Delete(dwg+"\\Profiles"+this->comboBox1->SelectedItem->ToString(),true);}
        Directory::CreateDirectory(dwg+"\\Profiles"+this->comboBox1->SelectedItem->ToString());
        ZipFile::ExtractToDirectory(dwg+"\\Downloads"+fileName, dwg+"\\Profiles"+this->comboBox1->SelectedItem->ToString());
        this->progressBar1->Style = System::Windows::Forms::ProgressBarStyle::Blocks;
        label1->Text = L"Игра готова к запуску";
        progressBar1->Value = 0;
        File::WriteAllText(dwg+"\\Profiles"+this->comboBox1->SelectedItem->ToString()+"\\settings.txt", fileName);
        myProcess->Start();
        button_play->Enabled =true;
    }
}
else {myProcess->Start(); Hide(); button_play->Enabled =true;}
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18234 / 14148 / 5366
Регистрация: 17.03.2014
Сообщений: 28,840
Записей в блоге: 1
02.01.2016, 17:28
Fenix78563, я не понимаю что означает выражение "в течении 3-х потоков".
0
 Аватар для Fenix78563
165 / 11 / 4
Регистрация: 17.11.2015
Сообщений: 92
02.01.2016, 21:23  [ТС]
в отладке при загрузке завершается 3 потока прежде чем файл скачается

Добавлено через 21 минуту
OwenGlendower, а ведь можно как-то узнать размер файла, перед закачкой и размер текущего файла?
а потом рассчитать проценты

Добавлено через 3 часа 33 минуты
Попробовал впаять ему это:
C++
1
CBindStatusCallback* cb = new CBindStatusCallback;
словил в ответ это:
error C2259: CBindStatusCallback: невозможно создать экземпляр абстрактного класса
1> из-за следующих членов:
1> HRESULT IUnknown::QueryInterface(const IID &,void **): абстрактный
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\unknwn.h(116) : см. объявление "IUnknown::QueryInterface"
1> ULONG IUnknown::AddRef(void): абстрактный
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\unknwn.h(120) : см. объявление "IUnknown::AddRef"
1> ULONG IUnknown::Release(void): абстрактный
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\unknwn.h(122) : см. объявление "IUnknown::Release"
1> HRESULT IBindStatusCallback::OnStartBinding(DWOR D,IBinding *): абстрактный
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.h(1348 ): см. объявление "IBindStatusCallback::OnStartBinding "
1> HRESULT IBindStatusCallback::GetPriority(LONG *): абстрактный
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.h(1352 ): см. объявление "IBindStatusCallback::GetPriority"
1> HRESULT IBindStatusCallback::OnLowResource(DWORD ): абстрактный
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.h(1355 ): см. объявление "IBindStatusCallback::OnLowResource"
1> HRESULT IBindStatusCallback::OnProgress(ULONG,UL ONG,ULONG,LPCWSTR): абстрактный
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.h(1358 ): см. объявление "IBindStatusCallback::OnProgress"
1> HRESULT IBindStatusCallback::OnStopBinding(HRESU LT,LPCWSTR): абстрактный
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.h(1364 ): см. объявление "IBindStatusCallback::OnStopBinding"
1> HRESULT IBindStatusCallback::GetBindInfo(DWORD *,BINDINFO *): абстрактный
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.h(1368 ): см. объявление "IBindStatusCallback::GetBindInfo"
1> HRESULT IBindStatusCallback::OnDataAvailable(DWO RD,DWORD,FORMATETC *,STGMEDIUM *): абстрактный
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.h(1372 ): см. объявление "IBindStatusCallback::OnDataAvailabl e"
1> HRESULT IBindStatusCallback::OnObjectAvailable(c onst IID &,IUnknown *): абстрактный
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.h(1378 ): см. объявление "IBindStatusCallback::OnObjectAvaila ble"

Как туда правильно обратиться?
0
 Аватар для Fenix78563
165 / 11 / 4
Регистрация: 17.11.2015
Сообщений: 92
06.01.2016, 17:23  [ТС]
Up UP!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2016, 17:23
Помогаю со студенческими работами здесь

Синий экран при загрузке W7 x64, при загрузке же XP x32 все гладко
Вообщем синий экран каждый раз при загрузке windows 7. Сразу после лого(в момент анимации. Она зависает и через 3 сек bsod). Комп...

ProgressChanged event
Создал я класс. Один из методов по сути зализит на страницу по указанному адресу, парсит её и рекурсивно погружается (переходит) на один...

Компьютер при загрузке останавливается при появлении надписей f1,f2 и DEL SETUP
проблема в загрузке компа, при включении загрузка останавливается при появлении надписей f1,f2 и DEL SETUP, после нажатия клавишь...

Компьютер выключается при загрузке Windows при появлении Logon screen
Здравствуйте! При включении компьютера после того, как он был выдернут из розетки, загрузка Windows 7 доходит до экрана приветствия, а...

При первой загрузке страницы - одно сообщение, при последующих - другое
Здравствуйте. Только учусь программировать. Сейчас делаю вот что.. Есть сайт-приглашение на вечеринку. На странице указываешь свои...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru