Вы не можете.Проблема в том, что вы можете работать с пользовательским интерфейсом (добавлять кнопки в строку / ячейку) только из потока STA.Но Parallel.For создаст отдельный поток, и вы получите ошибку: System.InvalidOperationException:
'Cross-thread operation not valid: Control 'Form1' accessed from a thread other than the thread it was created on.'
Кроме того, вы можете сделать form.Invoke(() => row.Cells.Add(cell))
, чтобы подавить эту ошибку, но вы потеряете всю прибыль от Parallel.For
, потому что row.Cells.Add(cell)
является самой дорогой частью вашего кода.
Вы можете воспроизвести его с помощью следующего кода:
Parallel.For(0, NumDia, (i, state) =>
{
aImageButton[i] = new ImageButton();
aImageButton[i].ID = "ImageButton" + (i + 1);
.....
TableCell cell = new TableCell();
cell.Controls.Add(aImageButton[i]);
row.Cells.Add(cell);
});