A couple of things.
1) Don't add rows to the DGV one by one - add them all at the end with with AddRange instead. Adding them one-by-one updates the display control each time, and that's slow.
2) Look at your code.
strLine= data1 + "," + data2 + "," + data3 + "," + data4 + "," + data5 + "," + data6 + "," + data7 + "," + data8 + "," + data9;
string[] strArray = strLine.Split(',');
strArray = strLine.Split(',');
Why?
Take individual values - all strings - assemble them into one string with an added separator, then split it up into separate strings based on the seperator you just added ... Does that seem like a sensible way to do things?