Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
4 / 4 / 8
Регистрация: 11.11.2014
Сообщений: 256
1

Как запустить распаковку архива параллельно с работай программы?

28.01.2015, 13:39. Показов 676. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Помогите в решении!
При старте программы параллельно с выполнением основного кода должен распаковаться архив.
VB.NET
1
2
3
4
Dim sh As New Shell32.Shell()
Dim output As Shell32.Folder = sh.NameSpace(Application.StartupPath + "\S")
Dim input As Shell32.Folder = sh.NameSpace(Application.StartupPath + "\S\File.zip")
output.CopyHere(input.Items, 4)
Чтобы они друг другу не мешали, как мне кажется, необходимо запустить распаковку в отдельно потоке.
Как это можно реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.01.2015, 13:39
Ответы с готовыми решениями:

Как можно реализовать распаковку zip архива
Ребят подкиньте пример кода как можно реализовать распаковку zip архива(или любого другого...

Как скрыть распаковку SFX-архива, созданного в программе 7-Zip?
В 7 zip создал sfx архив copy /b 7zS.sfx + config.txt + vpn.7z vpn.exe в config.txt прописал...

Реализовать загрузку архива с сервера и распаковку
Всем здравствуйте, необходимо как-то реализовать загрузку определенного архива(зависит от...

Подскажите как параллельно запустить две функции в C++?
Всем доброй ночи! Подскажите как параллельно запустить две функции в C++? Если не трудно напишите...

4
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
28.01.2015, 13:42 2
Edgar4, попробуйте использовать BackgroundWorker, как вариант.
0
4 / 4 / 8
Регистрация: 11.11.2014
Сообщений: 256
28.01.2015, 15:02  [ТС] 3
Цитата Сообщение от Nachrichter Посмотреть сообщение
попробуйте использовать BackgroundWorker, как вариант.
А можно какой-нибудь промер для моего кода, чтобы разобраться с многопоточностью?
0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
28.01.2015, 15:34 4
Edgar4, кидаете на форму BackgroundWorker и в процедуру пишете Ваш код:
VB.NET
1
2
3
4
5
6
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
  Dim sh As New Shell32.Shell()
  Dim output As Shell32.Folder = sh.NameSpace(Application.StartupPath + "\S")
  Dim input As Shell32.Folder = sh.NameSpace(Application.StartupPath + "\S\File.zip")
  output.CopyHere(input.Items, 4)
End Sub
В нужный момент, например в загрузке формы, запускаете BackgroundWorker:
VB.NET
1
BackgroundWorker1.RunWorkerAsync()
Должно работать...
0
4 / 4 / 8
Регистрация: 11.11.2014
Сообщений: 256
29.01.2015, 04:25  [ТС] 5
Цитата Сообщение от Nachrichter Посмотреть сообщение
Должно работать...
Спасибо! Все отлично работает.
Но вот, если к этому коду прикрутить процесс бар, то почему-то он не идет.
Подскажите, где моя ошибка!
VB.NET
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
Public Class Form2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' инициализация pb
        ProgressBar1.Minimum = 0 ' начальное значние
        ProgressBar1.Maximum = 100 ' максимальное значение
        ProgressBar1.Step = 1 ' шаг
        ProgressBar1.Value = 0
        BackgroundWorker1.WorkerReportsProgress = True
        BackgroundWorker1.WorkerSupportsCancellation = True
        If BackgroundWorker1.IsBusy <> True Then
            'Запускаем асинхронную операцию
            BackgroundWorker1.RunWorkerAsync()
        End If
    End Sub
 
    Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
 
        Dim sh As New Shell32.Shell()
        Dim output As Shell32.Folder = sh.NameSpace(Application.StartupPath + "\S")
        Dim input As Shell32.Folder = sh.NameSpace(Application.StartupPath + "\S\File.zip")
        output.CopyHere(input.Items, 4)
 
    End Sub
    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
        BackgroundWorker1.CancelAsync()
        MsgBox("Всe ок")
    End Sub
 
    Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
        ProgressBar1.Value = (e.ProgressPercentage) ' изменяем значение pb
    End Sub
 
End Class
0
29.01.2015, 04:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2015, 04:25
Помогаю со студенческими работами здесь

Как запустить сайт из архива?
Добрый день. У нашей фирмы обновился сайт. Старый сайт забэкаплен в архив *.tar.gz, возникла...

Проблема с работай программы из упражнения
Здравствуйте. Я начал изучать язик Си по книжке Кочана &quot;Программирование на языке С&quot;. Дошёл только...

Можно ли запустить два процесса параллельно
Ребята, подскажите, можно ли в Pascal ABC запустить два процесса паралельно, и при выполенении...

Доменный скрипт (нужно запустить параллельно несколько скриптов)
Здравствуйте. Возникла задача запустить на сервере несколько php скриптов параллельно. Все они...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru