我正在尝试快速填充元素组合框。如果我遍历它们,延迟时间太长,我不喜欢(几秒钟)。因此,在研究选项后,我尝试使用并行循环来实现异步。但是,我收到填充组合框的交叉线程错误,因此我尝试使用委托子,但是vb不会让我说'#34; add_item是一种类型,不能用作表达式"我的代码如下:
Parallel.For(0, search_results.Count - 1, Sub(x)
add_item(search_box, search_results(x)(0) & " - " & search_results(x)(1) & " " & search_results(x)(2))
End Sub)
Private Delegate Sub add_item(ByVal sb As ComboBox, ByVal txt As String)
Private Sub update_search_box(ByVal sb As ComboBox, ByVal txt As String)
If sb.InvokeRequired Then
sb.Invoke(New add_item(AddressOf update_search_box), New Object() {sb, txt})
Else
sb.Items.Add(txt)
End If
End Sub
答案 0 :(得分:0)
add_item
是您用来引用到原始update_search_box
方法的委托。
您已经在update_search_box
方法本身中使用了委托,因此您需要做的就是调用实际方法:
Parallel.For(0, search_results.Count - 1, Sub(x)
update_search_box(search_box, search_results(x)(0) & " - " & search_results(x)(1) & " " & search_results(x)(2))
End Sub)