Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
1

Запуск архивов по очереди

03.06.2010, 07:21. Показов 1408. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте бьюсь над следующей проблемой на форме есть progressBar1 который должен менять свое значение после распаковки каждого архива.



Код
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
48
49
50
51
52
53
54
55
56
57
58
private void button1_Click(object sender, EventArgs e)
        {
            int value = 0;//значение progressBar1
            string TempPath = @"D:\Temp\";
            string temp01Path = @"D:\Temp\temp01\";            
            string Arh1 = @"Data\Arh1.7z";
            string Arh2 = @"Data\Arh2.7z";
            string ZPath = @"Data\7z.exe";
            int Delitel = 2;//делитель по числу архивов
           
            //Стандарт фвижка для всех
            Process szArh1 = null;
            try
            {
                //параметры запуска процесса
                szArh1 = new Process();
                szArh1.StartInfo.FileName = ZPath;
                szArh1.StartInfo.Arguments = " x " + Arh1 + " -o" + temp01Path + " -y"; 
 
                // Старт
                szArh1.Start();
 
                // Ждем пока процесс не завершится
                szArh1.WaitForExit();
            }
            finally
            {
                if (szArh1 != null)
                {
                       szArh1.Close();
                }
                value = value + 100 / Delitel;
                progressBar1.Value = value;
            }
 
            Process szArh2 = null;
            
 
            try
            {
                // Устанавливаем параметры запуска процесса
                szArh2 = new Process();
                szArh2.StartInfo.FileName = ZPath;
                szArh2.StartInfo.Arguments = " x " + Arh2 + " -o" + TempPath + " -y";
 
                // Старт
                szArh2.Start();
 
                // Ждем пока процесс не завершится
                szArh2.WaitForExit();
            }
            finally
            {
                if (szArh2 != null) szArh2.Close();
                value = value + 100 / Delitel;
                progressBar1.Value = value;
            }
        }
в этом коде есть ряд проблем которые меня не удовлетворяют
1)после завершения первой распаковки сразу стартует вторая, а progressBar1 не меняет своего значения
2)во время распаковки архива формой нельзя управлять то есть перетаскивать, сворачивать, разворачивать и тп(возможно это и есть решение первого пункта дать форме "свободу" во время выполнения процесса)

архиватор следующий 7z.exe консольное приложение которое устанавливается вместе с архиватором.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2010, 07:21
Ответы с готовыми решениями:

Запуск потока вне очереди
Имею private void button1_Click(object sender, EventArgs e) { ...

Вывести содержимое очереди на экран и посчитать количество элементов образованной очереди
Дан текстовый файл. Проанализировать в программе содержимое файла, выберете из него имена и...

Написать программу содержащий описание очереди и моделирует работу очереди
Написать программу (функцию main), содержащий описание очереди и моделирует работу очереди. Размер...

Запуск jar архивов
Всем привет ситуация такая: У меня есть Jar архив с примерно таким классом: class MyClass...

8
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
03.06.2010, 07:53 2
Цитата Сообщение от Cdvig Посмотреть сообщение
во время распаковки архива формой нельзя управлять
конечно, потому что используется
Цитата Сообщение от Cdvig Посмотреть сообщение
WaitForExit()
поток программы останавливается до завершения вызванного процесса
Необходимо распаковку делать в дополнительном фоновом потоке, но тогда возникнут небольшие осложнения с отображением в progressBar.
0
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
03.06.2010, 08:09  [ТС] 3
Цитата Сообщение от nio Посмотреть сообщение
конечно, потому что используется

поток программы останавливается до завершения вызванного процесса
Необходимо распаковку делать в дополнительном фоновом потоке, но тогда возникнут небольшие осложнения с отображением в progressBar.
например я даже не представляю как это реализовать.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
03.06.2010, 08:42 4
класс Thread работает с потоками (описание в MSDN)


Цитата Сообщение от Cdvig Посмотреть сообщение
я даже не представляю как это реализовать
если отказаться от ипользования progressBar и убрать WaitForExit(), то будет и так работать
0
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
03.06.2010, 08:42  [ТС] 5
или возможно ли дождаться завершения процесса без WaitForExit например с помощью
C#
1
2
Arh1.EnableRaisingEvents = true
                Arh1.Exited +=new EventHandler(Arh1_Exited);
и далее
C#
1
2
3
4
private void Arh1_Exited(object sender, EventArgs e)
        {
            //чтото происходит после завершения процесса
        }
как то так но все равно не то может как то модифицировать этот код например булеаном или еше каким то событием например положить запуск второго процесса в цикл while и проверяя на истиность какого нибудь public bool а в событии Arh1_Exited задается значение этого булеана.
Или как то так может у кого есть лучше идея
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
03.06.2010, 08:50 6
Если нужно контролировать выполнение процесса и работать со своим приложением, единственный выход многопоточность.
0
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
03.06.2010, 14:07  [ТС] 7
А если сделать паузу перед запуском чтобы форма успела получить данные что архив распаковался
возможно ли такое?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
03.06.2010, 14:38 8
статический метод
C#
1
Thread.Sleep(<время>)
блокирует текущий поток на указанное количество мс. Но если произойдет сбой распаковки, что будешь делать ?.. Освой создание потоков, тема небольшая, но очень полезная
1
 Аватар для Cdvig
9 / 9 / 4
Регистрация: 08.10.2009
Сообщений: 173
03.06.2010, 16:53  [ТС] 9
Спасибо буду осваивать
0
03.06.2010, 16:53
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2010, 16:53
Помогаю со студенческими работами здесь

Запуск музики по очереди...
Я знаю что с помощю &lt;bgsound src='../FrameSite/Matron2.wav' loop='-1'&gt; , можно засунуть музыку на...

Запуск функций по очереди
Здравствуйте, подскажите пожалуйста При нажатии на кнопку должен запуститься 1 таймер, дождаться...

Запуск макросов по очереди - по щелчку кнопки
Добрый вечер. Возник вопрос по макросу. Нашел макрос, в котором в два столбца записаны названия...

Выведите содержимое очереди на экран и посчитайте количество элементов образованной очереди
Дан текстовый файл. Проанализировав в программе содержимое файла, выберите из него имена и занесите...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru