爲了能夠做我使用了一段代碼像這樣適當的跨線程訪問:跨線程Winforms的最簡單的方法是什麼?
Private Delegate Sub DelSetButton(ByVal button As Button, ByVal label As String, ByVal enabled As Boolean)
Private Sub SetButton(ByVal button As Button, ByVal label As String, ByVal enabled As Boolean)
If InvokeRequired Then
Invoke(New DelSetButton(AddressOf SetButton), button, label, enabled)
Else
button.Enabled = enabled
button.Text = label
End If
End Sub
這是不是可愛。
- 我要創建一個委託具有相同簽名
- 我需要寫一個類似的呼籲,每個控制類型或每個動作我想
我使用VB.NET 9/.NET Framework 3.5。
有沒有更好的方法來做到這一點?或者我堅持這種模式?
UPDATE:
我喜歡這一個最好的答案後:
Private Sub ContSetButton(ByVal button As Button, ByVal label As String, ByVal enabled As Boolean)
Invoke(New Action(Of Button, String, Boolean)(AddressOf SetButton), button, label, enabled)
End Sub
Private Sub SetButton(ByVal button As Button, ByVal label As String, ByVal Enabled As Boolean)
button.Text = label
button.Enabled = Enabled
End Sub
還不夠完美,但比我原來做的更好。
隨意回答如果你能做得比這更好。
當使用工作者線程時,所有工作人員都很忙,運行時間實際上需要花費更多時間搜索/創建工作人員而不是解僱代理人員? – Sesh 2009-02-24 11:40:06