, Почему не, Вызывают через Делегата, встроенного в.NET

я понимаю, что.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, это должно быть достаточно интеллектуально для знания, когда обновление от другого потока, и это могло сделать все вышеупомянутое само?

5
задан Matt Wilko 1 September 2011 в 09:08
поделиться