Tôi đã có đoạn mã sau:Me.Invoke trong VB.NET không thực sự "Gọi" - chủ đề trì hoãn trên Invoke tuyên bố
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
Vấn đề là, khi tôi gọi là "SetStatusBarText" phụ từ một chủ đề khác, InvokeRequired là True (vì nó nên được), nhưng sau đó đề tài của tôi gian hàng trên Me.Invoke tuyên bố - tạm dừng thực hiện cho thấy tất cả họ chỉ ngồi đó, không thực sự gọi bất cứ điều gì.
Bất kỳ suy nghĩ nào về việc tại sao các luồng có vẻ sợ Invoke?
Đó là chính xác những gì đang diễn ra - "Me.Invoke" đang đợi chuỗi chính trả lời, nhưng chủ đề chính vẫn bận rộn nhồi nhét nội dung vào Threadpool khi chuỗi đầu tiên kết thúc. Cảm ơn lời khuyên của bạn. – SqlRyan
Cảm ơn! Tôi đã chờ đợi Invokes kết thúc nhưng tất cả đều bị đóng băng. Tôi đã thêm một cuộc gọi đến System.Windows.Forms.Application.DoEvents() và nó hoạt động. –