я понимаю, что.NET является многопоточной, и это - хорошая вещь, но я постоянно сталкиваюсь с проблемами, когда у меня есть второстепенный рабочий, например, который обновляет некоторое управление на моей форме, и я должен сделать:
Private Sub SetRowCellBoolValueThreadSafe(ByVal row As Integer, ByVal col As Integer, ByVal value As Boolean)
If dgvDatabase.InvokeRequired Then
Dim d As New SetRowCellBoolValueCallback(AddressOf SetRowCellBoolValue)
Me.Invoke(d, New Object() {row, col, value})
Else
SetRowCellBoolValue(row, col, value)
End If
End Sub
Delegate Sub SetRowCellBoolValueCallback(ByVal row As Integer, ByVal col As Integer, ByVal value As Boolean)
Private Sub SetRowCellBoolValue(ByVal row As Integer, ByVal col As Integer, ByVal value As Boolean)
dgvDatabase.Rows(row).Cells(col).Value = value
End Sub
Мой вопрос состоит в том, почему это не встроено в рамку - конечно, если я пытаюсь обновить DataGridView
, это должно быть достаточно интеллектуально для знания, когда обновление от другого потока, и это могло сделать все вышеупомянутое само?