一个方法如何多线程并行处理,且处理完告知程序?

问题:

我有一个60000条数据的DataTable,我把他分为500条一个DataTable,然后将这500条数据的DataTable作为参数给到Insert(DataTable dt)方法,怎么将该方法以多线程方式去运行,并且不会导致方法里的相同名称的参数被覆盖?

怎么知道这些线程都运行完成了?

_我现在是这样写的,但是有问题。。。_
 for (int i = 0; i < dt.Rows.Count; i++)
 {
     dt2.ImportRow(dt.Rows[i]);

     if (dt2.Rows.Count == 500 || i == dt.Rows.Count - 1)
     {                           

        Task.Factory.StartNew(() => new InsertTable().Insert(dt2));
        dt2.Rows.Clear();                        
        }
 }

拜托大佬们,看一看,瞧一瞧,帮忙解决一下呗,

Parallel.For()了解下,自动分配你循环变量
https://blog.csdn.net/woaipangruimao/article/details/79800587