foreach (DataGridViewRow dgv in dataGridView4.SelectedRows) 

    // 中间的处理可以启动多个线程来并发处理,一次处理多条数据。线程数不宜过多
}

解决方案 »

  1.   

    因为可能有时导有上千条指纹记录,所以很慢,可能要半个小时左右,客户无法接受1481726554&1551195742&1347506787&1431787359&1533483336&1275940431&1481847757&1548013559&1617622029&1684925376&1751132891&1819742746&1887119343&1685707008&2019638183&1952917779&270380409&68108357&135648866&202819203&269324870&68998342&135503249&201827980&808182162&757721496&556267873&640013565&673786411&741158447&539042339&606414375&-656811301&-589439265&-791555373&-724183337&-926299445&-858927409&-1061043517&-993671481&-117835013&-50462977&-252579085&-185207049&-387323157&-319951121&-522067229&-454695193&-1734763877&-1667391841&-1869507949&-1802135913&-2004252021&-1936879985&-2138996093&-2071624057&-1195787589&-1128415553&-1330531661&-1263159625&-1465275733&-1397903697&-1600019805&-1532647769&-792634603&1598840414&1515738455&1363499355&1162822217&1331642436&-1078018628&-1145390664&-2021227132&-2088599168&-1886483060&-1953855096&-1752132204&-1818406512&-1671332452&-1738186344&-535224860&-333636128&-535752212&-199944472&-402060556&-871559440&-1073675524&-1006303624&-130467260&-63095232&-265211188&-197839160&-399955244&-869453872&-1071569956&-1004198440&953802020&1021165856&550628652&617982248&952513844&875704624&-1471166354&-1474670746&-2065469564&143418539&391012976&1954979287&352386747&1794196919&798245034&643933355&7889623&1420916358&-1565525267&-686993126&-2125689365&436047489&-1544458966&321435209&-1467923220&-314872104&89746961&1788224669&-68310292&-678615382&-1560315266&1198443070&-1358609389&-908749188&1830651743&-1054919837&-1725518398&-610551950&-1508455118&-1872128469&669069289&1923878863&1807770059&1948616427&-1217840851&334707204&1959514684&1306187370&638247220&1582010889&-990702489&-979255949&-134116906&1553290541&85689753&1049244965&870116530&1393964076&809785597&-1932638260&833602992&1392690652&-1308996184&1250893389&-1992273674&2031773179&1931722294&1588732129&367833840&440548350&802834889&-925174747&-2125917354&-1429552602&299257493&1657804848&249820017&-220919224&-1889471860&617465217&-1591330953&-960548283&-1514557289&703255969&1785349441&-800643212&-1827216041&-869056995&1057226642&770876870&1253469319&1405968504&-556066317&-326487639&1039853213&-763954827&-525131075&2025651888&-1019716225&-2135104812&484005828&-1029328369&-1560020555&-74930668&2143025504&1835916270&2131255456&1093686312&100285963&1021103267&1907611921&-543011132&-492883398&313091994&-41396616&1939079907&1077211642&393773127&-1699210452&-1833403785&-390428494&455426528&1497396301&-864577524&981472934&-546116981&1749777481&1876848483&394128069&582046468&-1649085796&1205944726&-62578883&-1000835737&783503087&-624237699&-1198429602&-757216387&1545666946&-1890642827&151063433&-272627236&-1025879227&20155148&559114664&1968020908&-250397695&1092908266&1326857713&1140169326&-1991206705&-920700009&-681888434&-1551193666&-208803121&-2096085310&-363149296&-1397903697&-1600019805&-1532647769&1482250843&1549622879&1347506771&1414878807&1212762699&1280134735&1078018627&1145390663&2021227131&2088599167&1886483059&1953855095&1751738987&1819111023&1616994915&1684366951&404298267&471670303&269554195&336926231&134810123&202182159&66051&67438087&943274555&1010646591&808530483&875902519&673786411&741158447&539042339&606414375&-656811301&-589439265&-791555373&-724183337&-926299445&-858927409&-1061043517&-993671481&-117835013&-50462977&-252579085&-185207049&-387323157&-319951121&-522067229&-454695193&-1734763877&-1667391841&-1869507949&-1802135913&-2004252021&-1936879985&-2138996093&-2071624057&-1195787589&-1128415553&-1330531661&-1263159625&-1465275733&-1397903697&-1600019805&-1532647769&1482250843&1549622879&1347506771&1414878807&1212762699&1280134735&1078018627&1145390663&2021227131&2088599167&1886483059&1953855095&1751738987&1819111023&1616994915&1684366951&404298267&471670303&269554195&336926231&134810123&202182159&66051&67438087&943274555&1010646591&808530483&875902519&673786411&741158447&539042339&606414375&-656811301&-589439265&-791555373&-724183337&-926299445&-858927409&-1061043517&-993671481&-117835013&-50462977&-252579085&-185207049&-387323157&-319951121&-522067229&-454695193&-1734763877&-1667391841&-1869507949&-1802135913&-2004252021&-1936879985&-2138996093&-2071624057&-1195787589&-1128415553&-1330531661&-1263159625&-1465275733&-1397903697&-1600019805&-1532647769&1482250843&1549622879&1347506771&1414878807&1212762699&1280134735&1078018627&1145390663&2021227131&2088599167&1886483059&1953855095&1751738987&1819111023&1616994915&1684366951&404298267&471670303&269554195&336926231&134810123&202182159&66051&67438087&943274555&1010646591&808530483&875902519&673786411&741158447&539042339&606414375&-656811301&-589439265&-791555373&-724183337&-926299445&-858927409&-1061043517&-993671481&-117835013&-50462977&-252579085&-185207049&-387323157&-319951121&-522067229&-454695193&-1734763877&-1667391841&-1869507949&-1802135913&-2004252021&-1936879985&-2138996093&-2071624057&-1195787589&-1128415553&-1330531661&-1263159625&-1465275733&-1397903697&-1600019805&-1532647769&1482250843&1549622879&1347506771&1414878807&1212762699&1280134735&1078018627&1145390663&2021227131&2088599167&1886483059&
      

  2.   

    Thread[] threads = new Thread[5];//我多线程应该加在哪里,对线程不熟
    foreach (DataGridViewRow dgv in dataGridView4.SelectedRows) 

        // 中间的处理可以启动多个线程来并发处理,一次处理多条数据。线程数不宜过多 
    }
     foreach (DataGridViewRow dgv in dataGridView4.SelectedRows)
                {
                    iii++;
                    if (iii % every == 0)
                    {
                        progressBar1.Value = iii / every;
                    }
                   
                    if (dgv.Cells["ziwen"].Value.ToString().Trim() == "")
                    {
                        listBox2.Items.Add("导入号[" + dgv.Cells["no"].Value.ToString() + "]没有指纹记录 ");
                        continue;
                    }
                    lsa = ""; no = ""; name = ""; qx = ""; zino = "";
                    lsa = dgv.Cells["ziwen"].Value.ToString().Trim().Substring(0, dgv.Cells["ziwen"].Value.ToString().Trim().Length - 1);
                    no = dgv.Cells["no"].Value.ToString();
                    name = dgv.Cells["name"].Value.ToString();
                    qx = dgv.Cells["qx"].Value.ToString();
                    zino = dgv.Cells["zino"].Value.ToString();
                    listBox2.Items.Add("正在设置登记号 [" + dgv.Cells["no"].Value.ToString() + "]");
                    if (lsa != "")
                    {
                        WriteDaTa(lsa,no,name,qx,zino);
                    }
                    listBox2.SelectedIndex = listBox2.Items.Count - 1;
                }
    private void WriteDaTa(String a,string No,string Name,string Qx,string Zino)
            {
                lock (this)
                {
                    object var;
                    Int32[] arr2;
                    string[] arrtemp = a.Split('&');
                    arr2 = new Int32[arrtemp.Length];
                    for (int i = 0; i < arrtemp.Length - 1; i++)
                    {
                        arr2[i] = Convert.ToInt32(arrtemp[i]);
                    }
                    a = "";
                    var = new System.Runtime.InteropServices.VariantWrapper(arr2);
                    if (!axFK542PET1.SetEnrollData(mMachineNumber, Convert.ToInt32(No), mMachineNumber, Convert.ToInt32(Zino), Convert.ToInt32(Qx), ref var, 0))
                    {
                        listBox2.Items.Add("导入登记号[" + No + "]" + "指号[" + Zino + "]发生失败 ");
                    }
                    if (Name != "")
                    {
                        if (axFK542PET1.SetUserName(2, mMachineNumber, Convert.ToInt32(No), Name) == false)
                        {
                            listBox2.Items.Add("导入姓名[" + Name + "]" + "指号[" + Zino + "]发生失败 ");
                        }
                    }
                }
     
            }
      

  3.   

     private void setvlauetojh_Click(object sender, EventArgs e)
            {            mMachineNumber = getjh(); if (mMachineNumber == 0) { return; }
                listBox2.Items.Clear();            string lsa = "", no = "", name = "", qx = "", zino = "";
               
                
                foreach (DataGridViewRow dgv in dataGridView4.SelectedRows)
                {                if (dgv.Cells["ziwen"].Value.ToString().Trim() == "")
                    {
                        listBox2.Items.Add("导入号[" + dgv.Cells["no"].Value.ToString() + "]没有指纹记录 ");
                        continue;
                    }
                    lsa = ""; no = ""; name = ""; qx = ""; zino = "";
                    lsa = dgv.Cells["ziwen"].Value.ToString().Trim().Substring(0, dgv.Cells["ziwen"].Value.ToString().Trim().Length - 1);
                    no = dgv.Cells["no"].Value.ToString();
                    name = dgv.Cells["name"].Value.ToString();
                    qx = dgv.Cells["qx"].Value.ToString();
                    zino = dgv.Cells["zino"].Value.ToString();
                    listBox2.Items.Add("正在设置登记号 [" + dgv.Cells["no"].Value.ToString() + "]");
                    if (lsa != "")
                    {
                      Thread thr;//这里用一个线程,但多线程怎么做,这是一行一行做,我想一次多行,早点完成
                        ParameterizedThreadStart delegated;
                        object oo = (object)dgv;
                        delegated = new ParameterizedThreadStart(WriteDaTa);
                        thr = new Thread(delegated);
                        thr.Start(oo);
                    }
                    listBox2.SelectedIndex = listBox2.Items.Count - 1;
                }
                axFK542PET1.EnableDevice(mMachineNumber, 1);
                listBox2.Items.Add("导入完成 ");        }
          
                
                public void WriteDaTa(object tempdv)
                {
                    lock (this)
                    {
                        DataGridViewRow Dv=(DataGridViewRow)tempdv;
                        string a = "", No = "", Name = "", Qx = "", Zino = "";
                        a = Dv.Cells["ziwen"].Value.ToString().Trim().Substring(0, Dv.Cells["ziwen"].Value.ToString().Trim().Length - 1);
                        No = Dv.Cells["no"].Value.ToString();
                        Name = Dv.Cells["name"].Value.ToString();
                        Qx = Dv.Cells["qx"].Value.ToString();
                        Zino = Dv.Cells["zino"].Value.ToString();
                        object var;
                        Int32[] arr2;
                        string[] arrtemp = a.Split('&');
                        arr2 = new Int32[arrtemp.Length];
                        for (int i = 0; i < arrtemp.Length - 1; i++)
                        {
                            arr2[i] = Convert.ToInt32(arrtemp[i]);
                        }
                        a = "";
                        var = new System.Runtime.InteropServices.VariantWrapper(arr2);
                        if (!axFK542PET1.SetEnrollData(mMachineNumber, Convert.ToInt32(No), mMachineNumber, Convert.ToInt32(Zino), Convert.ToInt32(Qx), ref var, 0))
                        {
                            listBox2.Items.Add("导入登记号[" + No + "]" + "指号[" + Zino + "]发生失败 ");
                           
                        }
                        if (Name != "")
                        {
                            if (axFK542PET1.SetUserName(2, mMachineNumber, Convert.ToInt32(No), Name) == false)
                            {
                                listBox2.Items.Add("导入姓名[" + Name + "]" + "指号[" + Zino + "]发生失败 ");
                            }
                        }
                        
                    }            }