none
Sincronização de threads RRS feed

  • Pergunta

  • Olá pessoal,

    gostava de uma ajuda de modo a conseguir sincronizar  threads.

    O problema é o seguinte:

    Tenho um Form que inicia várias threads em paralelo no método Load, o  que  pretendo é que após o inicio das thread filho a thread pai pare a execução e só volte a ser executada quando as thread filho terminarem.

    Já exprimentei várias soluções mas nenhuma funcionou, abaixo coloco

    um excerto do código.

     

    Obrigado.

    Duarte.

     

     

    Private Sub frm_Reservas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     

    If (TableComiss Is Nothing) Then

    AddHandler clsFunction.FinishedComiss, AddressOf FinishedComissEventHandler

    Thread1.Start()

    End If

    If (TableCli Is Nothing) Then

    AddHandler clsFunction.FinishedCli, AddressOf FinishedCliEventHandler

    Thread2.Start()

    End If

     

    end sub

     

    Sub FinishedComissEventHandler(ByVal dtComiss As DataTable)

     

    Invoke(New ChangeTextControlDelegate2(AddressOf preencheComboBoxComiss), New Object() {Thread1.Name, ComboBoxNComiss, Label45})

     

    End Sub

     

     

    Sub FinishedCliEventHandler (ByVal dtCliente As DataTable)

     

    Invoke(New ChangeTextControlDelegate(AddressOf preencheComboBoxCli), New Object() {Thread2.Name, ComboBoxNomeCli, ""})

     

    End Sub

     

     

    Sub preencheComboBoxCli(ByVal aThreadName As String, ByVal aComboBox As ComboBox, ByVal newText As String)

     With aComboBox

    .DisplayMember = "Nome"

    .ValueMember = "Nome"

    .DataSource = TableCli.DefaultView

    .SelectedIndex = -1

    End With

     

    End sub

     

     

    segunda-feira, 4 de junho de 2007 19:18

Todas as Respostas

  • Oi !

     

    Os objetos Thread tem um método Join que talvez resolva o seu problema.

     

    []'s

     

    segunda-feira, 4 de junho de 2007 22:31
  • Já tentei o método Join só que não funciona, dado que as thread filho precisam de executar na thread Pai através do Invoke.

    Usando o join as thread filho não conseguem terminar a execução.

     

     

    terça-feira, 5 de junho de 2007 09:37