많은 스레드를 동시에 처리하는 서버 프로그램을 작성했습니다.스레딩 : 스레드를 차단하지 않고 UI를 업데이트 하시겠습니까?
이러한 스레드에서 상태 정보를 사용하여 ListView를 업데이트해야하지만 지금은 호출을 사용하므로 스레드는 UI가 ListView 업데이트를 마칠 때까지 기다립니다.
ListView에 상태를 보내고 ListView가 업데이트를 완료하는 동안 스레드를 계속 수행 할 수있는 좋은 조언은 무엇입니까?
여기 내 코드의
...Public Delegate Sub InfoDelegate(status As String)
Public Sub Info(status As String)
If Me.InvokeRequired Then
Dim d As New InfoDelegate(AddressOf Info)
Me.Invoke(d, status)
Else
Dim item As New ListViewItem With {
.Text = status}
With lv
.BeginUpdate()
.Items.Insert(0, item)
If .Items.Count > 500 Then
For i As Integer = Me.lv.Items.Count - 1 To 500 Step -1
Me.lv.Items.RemoveAt(i)
Next
End If
.EndUpdate()
End With
End If
End Sub
대신 사용 BeginInvoke' :
다음은 예입니다. – jmcilhinney
'EndInvoke'도 반드시 호출해야한다는 것을 기억하십시오! –
@VisualVincent 확실합니까? Microsoft는 EndInvoke를 호출하지 않습니다 ... https://msdn.microsoft.com/en-us/library/a06c0dc2(v=vs.110).aspx – MojoDK