Что ж, поскольку DataGridView - это элемент управления с графическим интерфейсом, вы не сможете вносить в него изменения из другого потока.Вам нужно будет отправить сообщение в основной поток GUI.К счастью, C # имеет хорошую поддержку для этого.Напишите метод (предположительно в вашем основном классе формы), который выполняет фактическую работу:
public void SetRowFromWebResult(int row, Color background, ...)
{
// ...
}
Затем в вашем потоке используйте Invoke
метод для объекта формы (неделегат):
myForm.Invoke(() => myForm.SetRowFromWebResult(row, background, ...));
Предположительно, вы бы запустили ваш HTTP-запрос в такой цепочке:
int row = ...;
var myThread = new Thread(() =>
{
// Fire off the request
var request = WebRequest.Create(...);
var response = ...;
// Calculate the parameters (e.g. row background color)
Color background = (response.Code == ...) ? ... : ...;
// Tell the GUI to update the DataGridView
myForm.Invoke(() => myForm.SetRowFromWebResult(row, background, ...));
});
myThread.Start();