лучший способ, который я нашел для этого, - использовать объект synchronizationContext для отправки вызова .add в поток графического интерфейса.
в моей ситуации у меня есть классы со свойством типа synchronizationContext, которое я устанавливаю в SynchronizationContext.Current, когда класс инициализируется.тогда я могу вызвать что-то вроде:
SyncContext.Post (Sub () _displaySource.Rows.Add (r) End Sub, Nothing)
, когда класс работает в другом потоке иработает отлично.без этого вы будете иногда получать надоедливый красный X