兄弟伙些看这段代码有没有可以优化的地方
当对考勤机导入数据量大时,相当慢,兄弟伙些看这段代码有没有可以优化的地方private void setvlauetojh_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
mMachineNumber = getjh(); if (mMachineNumber == 0) { return; }
listBox2.Items.Clear();
Int32[] arr2;
string a = "";
object var;
foreach (DataGridViewRow dgv in dataGridView4.SelectedRows)
{
if (dgv.Cells["ziwen"].Value.ToString().Trim() == "")
{
listBox2.Items.Add("导入号[" + dgv.Cells["no"].Value.ToString() + "]没有指纹记录 ");
continue;
}
a = dgv.Cells["ziwen"].Value.ToString().Trim().Substring(0, dgv.Cells["ziwen"].Value.ToString().Trim().Length - 1);
listBox2.Items.Add("正在设置登记号 [" + dgv.Cells["no"].Value.ToString() + "]");
if (a != "")
{
string[] arrtemp = a.Split('&');//这里的变量A比较大有四五千个字符来拆成数组
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(dgv.Cells["no"].Value), mMachineNumber, Convert.ToInt32(dgv.Cells["zino"].Value), Convert.ToInt32(dgv.Cells["qx"].Value), ref var, 0))
{
listBox2.Items.Add("导入登记号[" + dgv.Cells["no"].Value.ToString() + "]" + "指号[" + dgv.Cells["zino"].Value.ToString() + "]发生失败 ");
continue;
}
if (dgv.Cells["name"].Value.ToString().Trim()!="")
{
if (axFK542PET1.SetUserName(2, mMachineNumber, Convert.ToInt32(dgv.Cells["no"].Value), dgv.Cells["name"].Value.ToString()) == false)
{
listBox2.Items.Add("导入姓名[" + dgv.Cells["name"].Value.ToString() + "]" + "指号[" + dgv.Cells["zino"].Value.ToString() + "]发生失败 ");
continue;
}
}
}
listBox2.SelectedIndex = listBox2.Items.Count - 1;
}
listBox2.Items.Add("导入完成 ");
this.Cursor = Cursors.Default;
} --------------------编程问答-------------------- foreach (DataGridViewRow dgv in dataGridView4.SelectedRows)
{
// 中间的处理可以启动多个线程来并发处理,一次处理多条数据。线程数不宜过多
} --------------------编程问答-------------------- 同意楼上的说法. --------------------编程问答-------------------- 楼主问这问题,可能是碰到了什么问题,不妨详细说说 --------------------编程问答-------------------- 因为可能有时导有上千条指纹记录,所以很慢,可能要半个小时左右,客户无法接受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& --------------------编程问答-------------------- 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 + "]发生失败 ");
}
}
}
} --------------------编程问答-------------------- 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 + "]发生失败 ");
}
}
}
} --------------------编程问答--------------------
补充:.NET技术 , C#