Ho il seguente codice:Me.Invoke in VB.NET in realtà non "Invoke" - discussioni stallo sulla dichiarazione Invoke
Public Delegate Sub SetStatusBarTextDelegate(ByVal StatusText As String)
Private Sub SetStatusBarText(ByVal StatusText As String)
If Me.InvokeRequired Then
Me.Invoke(New SetStatusBarTextDelegate(AddressOf SetStatusBarText), StatusText)
Else
Me.labelScanningProgress.Text = StatusText
End If
End Sub
Il problema è che, quando chiamo il "SetStatusBarText" sub da un altro thread, InvokeRequired è True (come dovrebbe essere), ma i miei thread si bloccano sull'istruzione Me.Invoke - la sospensione dell'esecuzione mostra che sono tutti seduti proprio lì, in realtà non invocando nulla.
Qualche idea sul perché i thread sembrano aver paura di Invoke?
Questo è esattamente quello che stava succedendo - il "Me.Invoke" stava aspettando che il thread principale rispondesse, ma il thread principale era ancora occupato a riempire le cose nel Threadpool mentre i primi thread stavano finendo. Grazie per il tuo consiglio. – SqlRyan
Grazie! Stavo aspettando che gli invocati finissero, ma erano tutti congelati. Ho aggiunto una chiamata a System.Windows.Forms.Application.DoEvents() e funziona. –