スレッドで同時に多くのジョブを実行するサーバープログラムを作成しました。スレッド:スレッドをブロックせずに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あなたは本当ですか?マイクロソフトではEndInvokeを呼び出しません... https://msdn.microsoft.com/en-us/library/a06c0dc2(v=vs.110).aspx – MojoDK