Avrei la necessità di gestire due ProgressBar, nel senso che al completamento del primo si attivi l'altro. Con il codice sotto leggo l'elenco delle provincie presenti in un DataGridView e con ciclo For Next attivo il 1° ProgressBar delle Provincie (AggiornaXLMProvTSPB), sulla base della Provincia letta cerco in un file tutti i comuni di quella provincia e attivo il 2° ProgressBar ( AggiornaXLMComuniTSPB) dei Comuni ricercati
Private Sub AggiornaComuni()
Dim NumProv As Integer = ProvinceDataGridView.Rows.Count - 1
AggXLMProvTSL.Visible = True
AggiornaXLMProvTSPB.Visible = True
ComuniTSL.Visible = True
AggiornaXLMComuniTSPB.Visible = True
AggXLMProvTSL.Visible = True
AggiornaXLMProvTSPB.Visible = True
AggiornaXLMProvTSPB.Value = 0
AggiornaXLMProvTSPB.Maximum = NumProv
AggiornaXLMProvTSPB.Step = 1
NotaAggTSL.Visible = True
Dim filecomuni As String = Application.StartupPath & "\Comunt.dat"
Dim rec As Integer = 0
Dim Scrivi As New XmlTextWriter(Application.StartupPath & "\ProvComuni_tmp.xml", System.Text.Encoding.UTF8)
Scrivi.WriteStartDocument(True)
Scrivi.Formatting = Formatting.Indented
Scrivi.Indentation = 0
Scrivi.WriteStartElement("Provincie-Comuni")
For i = 1 To NumProv
AggiornaXLMProvTSPB.Value = i
Dim nomeprov As String = ProvinceDataGridView.Rows(i - 1).Cells(1).Value()
Dim nomesigla As String = ProvinceDataGridView.Rows(i - 1).Cells(2).Value()
Dim nomeregione As String = ProvinceDataGridView.Rows(i - 1).Cells(3).Value()
AggXLMProvTSL.Text = nomeprov
CreateNodoProvincie(i, nomeprov, nomesigla, nomeregione, Scrivi)
AggiornaXLMComuniTSPB.Maximum = 385 'ComuniDataGridView.RowCount
Using myReader As New FileIO.TextFieldParser(
filecomuni)
myReader.TextFieldType = FileIO.FieldType.Delimited
myReader.SetDelimiters("@")
While Not myReader.EndOfData
Dim currentRow As String()
currentRow = myReader.ReadFields()
Dim NumRecord As Integer = currentRow.Length
For Each currentField As String In currentRow
If currentField.StartsWith("0") Then
MenuToolStrip.Refresh()
Continue For
End If
Dim siglaprov As String = currentField.Substring(25, 2)
If siglaprov = nomesigla Then
rec += 1
AggiornaXLMComuniTSPB.Value = rec
Dim lun As Integer = currentField.Length
Dim sezione As String = currentField.Substring(1, 1)
Dim codcomune As String
If sezione = " " Then
codcomune = currentField.Substring(2, 4)
Else
codcomune = currentField.Substring(2, 4) & sezione
End If
Dim comune As String = If(lun >= 67, currentField.Substring(29, 34).TrimEnd, currentField.Substring(29, lun - 33).TrimEnd)
comune = StrConv(comune, VbStrConv.ProperCase)
ComuniTSL.Text = comune
CreateNodoComuni(rec, comune, nomesigla, nomeregione, codcomune, Scrivi)
End If
Next
CreateNodoComuni(rec + 1, "Intera provincia", nomesigla, nomeregione, "IN" & nomesigla, Scrivi)
rec = 0
myReader.Close()
End While
End Using
Next i
Scrivi.Close()
My.Computer.FileSystem.DeleteFile(Application.StartupPath & "\ProvComuni.xml", FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.DeletePermanently)
My.Computer.FileSystem.RenameFile(Application.StartupPath & "\ProvComuni_tmp.xml", "ProvComuni.xml")
Ricarica_ProvComuni("AG")
MsgBox("Database XLM aggiornato con successo", MsgBoxStyle.Information, "Aggiornamento")
End Sub
In questo modo il 1° ProgressBar va avanti senza attendere la conclusione del 2°. E' possibile mettere in pausa il 1° ProgressBar finché non sono stati ricercati tutti i comuni della Provincia selezionata?
Spero di essere stato chiaro
Saluti
Giorgio