aşağıdaki programa bakınız. Yeni bir iş parçacığı x işlev abc ile başlatıyorum, daha sonra biraz daha görev yapıyorum. Neden x sadece sondan sonra başlıyor? Uyumadan hemen önce başlamamalı mı? İplerim neden hemen başlamıyor?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x As New Threading.Thread(AddressOf abc)
x.SetApartmentState(Threading.ApartmentState.MTA)
x.Start()
System.Threading.Thread.Sleep(5000)
End Sub
Sub abc()
For i As Integer = 0 To 10 Step 1
Me.lblStatus.Text = "Testing DB connection (timeout in: " + i.ToString() + "s)"
'Me.StatusStrip1.Invoke(
MsgBox(i.ToString)
System.Threading.Thread.Sleep(1000)
Next
End Sub
Düzenleme:
(A) bağlantı girişimlerini ve ayrı parçacıkları halinde zaman aşımı sayım hem koyun:
çözeltisi budur.
(B) böyle UI Güncelleme: Sen bir sivil adresinin UI güncelliyoruz
Delegate Sub t_pUpdateStatusText(ByVal strMessage As String)
Public pUpdateStatusMessage As t_pUpdateStatusText = New t_pUpdateStatusText(AddressOf UpdateStatusMessage)
Public Sub UpdateStatusMessage(ByVal strMessage As String)
Me.lblStatus.Text = strMessage
Me.StatusStrip1.Update()
End Sub
İş parçacığının yalnızca yöntem bittikten sonra başladığını nasıl doğrularsınız? Etikete mi bakıyorsunuz yoksa ateş etmeyi mi bırakıyorsunuz? –
Aslında, görüntülemediğinde, bir kesme noktası belirledim. –