Salve a tutti,

innanzitutto complimenti x il forum e x la competenza! consultando le vostre pagine ho risolto molti problemi che opprimevano la mia programmazione xD

detto questo, arrivo al punto! sto cercando di realizzare un programma multi thread senza interfaccia grafica ma ho riscontrato un problema: nn capisco se il programma non funziona causa problemi tra l'esecuzione del 2° thread e l'application.run del 1° thread ke mi serve a visualizzare il menù contestuale

nel 1° thread (main) ho solo il menu contestuale mentre nel secondo c'è un ciclo for che controlla continuamente se l'utente digita una sequenza di numeri (password) confrontando i numeri digitati con quelli memorizzati su una stringa

seguendo passo passo la funzione del 2° thread sembra funzionare, ma una volta eseguito un debug pur digitando la password non accade nulla

ecco il codice che ho reallizato
codice:
'ometto dichiarazioni voci menù
Public Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Keys) As Integer
Dim T As New Threading.Thread(AddressOf get_num)

Sub Main()
        Init()
        thread_start()
        nfiIcona.Visible = True
        Application.Run()
    End Sub

sub init()
'creo il menù
... 
...
end sub

sub thread_start()
T.IsBackground = True
T.Start()
End Sub

sub get_num()

pwctrl = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\PcLockInfo", "Pw", Nothing)

        If pwctrl <> "" Then

            ReDim pos(0 To Len(pwctrl) - 1)

            For i = 0 To Len(pwctrl) - 1
                c += 1
                pos(i) = Mid(pwctrl, c, 1)
            Next i

            Do
                For e = 48 To 57
                    b = 0
                    b = GetAsyncKeyState(e)
                    '   b = -32767
                    If m < Len(pwctrl) Then
                        If b = -32767 And Chr(e) = pos(m) Then
                            m += 1
                            h = h & Chr(e)
                        Else
                            h = ""
                            m = 0
                        End If
                    End If
                    Threading.Thread.Sleep(100)
                    If h = pwctrl Then
                        Exit For
                    End If
                Next e

            Loop Until h = pwctrl

            MsgBox(h, 16, "")

        Else
            nopass()
        End If
end sub