Hi
For Q1.
If I understood properly, why u r using for loop for data binding?
If you use For Loop then it is data filling not binding.
simply try the following code.
DataGridView1.DataSource = DataTable1
For Q2.
If you are doing thing in background worker then you have to invoke the
controls of parent thread and then do what ever you want.
If you need any example code try searching in msdn.