The DataGridView is on one thread. Then you create another thread to start making the rows. That second thread can't talk to the objects on the first. If the purpose of this was to play around with threading, I think you need to find some other way. Any control that a user sees on the form is going to be on a separate thread and therefore you will have cross-threading issues.
If you are a beginner in threading concepts, you might want to start by playing around with a
BackgroundWorker[
^]
Here[
^] is an article about how to use one.
If you want to learn about doing threading manually, try
google[
^] for some tutorials to start with.
Hope this helps.