Чтобы сделать правильный межпотоковый доступ, я использую кусок кода примерно так:
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.
Есть ли лучший способ сделать это? Или я застрял с этой моделью?
ОБНОВЛЕНИЕ:
После ответов мне больше всего нравится этот:
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
Все еще не идеально, но лучше, чем я делал изначально.
Не стесняйтесь отвечать, если вы можете сделать это лучше, чем это.