Параллельное обновление нескольких ProgressBar из разных потоков - Visual Basic .NET
Формулировка задачи:
Доброго всем времени суток! Суть проблемы:
На форме 2 прогресс бара и 2 кнопки
Нажал 1 кнопку запустил 1 поток начал обновляться 1 контрол.
Нажал 2 кнопку запустил 2 поток - 1 поток остановился, дождался завершения работы 2 потока и затем продолжил работу. Как запустить 2 поток не прерывая 1-го и соответственно не прерывая обновления 1-го прогресс бара?
Просьба не пинать ! И маленький примерчик, если можно.
Решение задачи: «Параллельное обновление нескольких ProgressBar из разных потоков»
textual
Листинг программы
Imports System.Threading Public Class Form1 'потоки Public myThread1 As New Thread(AddressOf ImitationWork1) Public myThread2 As New Thread(AddressOf ImitationWork2) 'делегат. В данном случае 1, т.к. для обоих прогресс баров выполняется одинаковое действие. Delegate Sub myDelegate1(ByVal prc As Integer) 'методы обращения к процедурам присвоения данных Public sendPrc1 As New myDelegate1(AddressOf StatusProgressbar1) Public sendPrc2 As New myDelegate1(AddressOf StatusProgressbar2) Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'запуск потока myThread1.Start() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click myThread2.Start() End Sub ' имитация какого-нибудь процесса Sub ImitationWork1() Dim n As Integer = 0 Do While n < 100 Thread.Sleep(200) n += 1 'отправляем значения при помощи метода Invoke в процедуры присвоения значений прогресс бару Me.ProgressBar1.Invoke(sendPrc1, n) Loop End Sub Sub ImitationWork2() Dim n As Integer = 0 Do While n < 100 Thread.Sleep(100) n += 1 Me.ProgressBar1.Invoke(sendPrc2, n) Loop End Sub 'процедуры присвоения значений прогресс барам Sub StatusProgressbar1(ByVal prc As Integer) Me.ProgressBar1.Value = prc End Sub Sub StatusProgressbar2(ByVal prc As Integer) Me.ProgressBar2.Value = prc End Sub End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д