일부 기본적인 스레딩을 수행하는 서버 프로그램을 작성 중입니다. 일부 UI 컨트롤을 업데이트해야하며 모든 항목이 스레드로부터 안전하도록 대리자를 사용하는 방법을 배웠습니다. 예를 들어, 다음 날 스레드에서 TextBox 컨트롤을 업데이트 할 수 있습니다 내 대리인의 :.NET의 스레드에서 카운터 업데이트
Private Delegate Sub AddMessageToTXTDelegate(ByVal lst As TextBox, ByVal str1 As String)
Private Sub AddMessageToTXT(ByVal txt As TextBox, ByVal str1 As String)
Try
If Me.InvokeRequired Then
Dim addTXT As New AddMessageToTXTDelegate(AddressOf AddMessageToTXT)
Me.BeginInvoke(addTXT, New Object() {txt, str1})
Else
txt.Text = str1
End If
Catch ex As Exception
Console.WriteLine(ex.Message)
Throw (ex)
End Try
End Sub
가 지금은 카운터를 업데이트해야와 나는 같은 패턴이 적용됩니다 생각. 다음 대표단을 구성했습니다.
Private Delegate Sub IncrementCounterDelegate(ByVal ctr As Integer)
Private Sub IncrementCounter(ByVal ctr As Integer)
Try
If Me.InvokeRequired Then
Dim incCtr As New IncrementCounterDelegate(AddressOf IncrementCounter)
Me.BeginInvoke(incCtr, New Object() {ctr})
Else
ctr += 1
End If
Catch ex As Exception
Console.WriteLine(ex.Message)
Throw (ex)
End Try
End Sub
내 카운터가 증가하지 않는 것이 문제입니다. 디버그로 이것을 추적하면 "ctr + = 1"문이 실행되지만 실제 카운터는 0으로 유지됩니다. 카운터를 통과시켜야한다고 생각합니다.
누구든지 여기에 조언을 제공 할 수 있습니까? 감사! CBF