В пункте # 1 вы можете исправить это, просто позвонив Form.Invalidate()
.Это заставит вашу форму перекрашиваться;это немного грязно, но это должно сработать.
В пункте №2, если у вас есть задача, которая обновляет содержимое элемента управления из другого потока, то вам следует всегда получитьисключение, так как доступ к элементу управления из любого потока, кроме потока пользовательского интерфейса, является недопустимым (поток, в котором он создан).Так что я не совсем понимаю, как вы это делаете.
Но я бы использовал поток, чтобы получить результаты, а затем сохранить их в переменной-члене (поле).Затем периодически проверяйте это поле, чтобы увидеть, нужно ли обновлять данные, и если взять данные из поля и поместить их в сетку, а затем обнулить поле.Вы можете использовать событие Tick
класса System.Windows.Forms.Timer
для реализации этой периодической проверки.
В своей процедуре обновления вы можете проверить свой флаг, чтобы увидеть, редактируется ли сеткаи игнорируйте обновления до позднего времени.