110,539
社区成员
发帖
与我相关
我的任务
分享
private void btnOldUpload_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
OldUpload();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
Console.WriteLine("error");
else
{
MSG("上传结束!");
}
}
/**需要长时间执行的方法**/
private void OldUpload()
{
int ucount = dgvUsers.Rows.Count;
int mcount = dgvOldMachines.Rows.Count;
for (int i = 0; i < mcount; i++)//
{
dgvOldMachines.EndEdit();
DataGridViewCheckBoxCell ckoldmachine = (DataGridViewCheckBoxCell)dgvOldMachines.Rows[i].Cells["xuanold"];
Boolean flag = Convert.ToBoolean(ckoldmachine.Value);
if (flag == true)//datagridview 设备选中的信息 {
int iMachineNumber = Convert.ToInt32(dgvOldMachines.Rows[i].Cells[2].Value.ToString());
MachineInfo m = MachineInfoBLL.SelectMachineInfoByEqpID(iMachineNumber.ToString());
for (int j = 0; j < ucount; j++)
{
dgvUsers.EndEdit();
DataGridViewCheckBoxCell checkcell = (DataGridViewCheckBoxCell)dgvUsers.Rows[j].Cells["Column1"];
Boolean flagm = Convert.ToBoolean(checkcell.Value);
if (flagm == true)//datagridview人员选中的信息
{
try
{
int idwEnrollNumber = Convert.ToInt32(dgvUsers.Rows[j].Cells[1].Value.ToString());
string sName = dgvUsers.Rows[j].Cells[2].Value.ToString();
if (Connect(axCZKEM1, m.Ip, m.Port, iMachineNumber.ToString(), Convert.ToInt32(m.Commpassword)))
{
// MSG("连接成功!");
int idwErrorCode = 0;
int idwFingerIndex = 0;
string sTmpData = "";
int iPrivilege = 0;
bool bEnabled = true;
int iUpdateFlag = 1;
string sPassword = "";
int iFlag = 1;
axCZKEM1.EnableDevice(iMachineNumber, false);
int iLastEnrollNumber = 0;//判断是否已上传用户信息
if (axCZKEM1.BeginBatchUpdate(iMachineNumber, iUpdateFlag))//创建批处理数据的内存空间
{
List<TempLate> tl = TempLateBLL.GetOldTempLateBySSN(idwEnrollNumber.ToString());//根据考勤号查询新机器指纹信息
if (tl.Count != 0)
{
foreach (TempLate t in tl)
{
idwFingerIndex = t.Fingerid;
sTmpData = t.Template;
if (idwEnrollNumber != iLastEnrollNumber)//判断是否已上传用户信息(指纹信息除外)
{
if (axCZKEM1.SetUserInfo(iMachineNumber, idwEnrollNumber, sName, sPassword, iPrivilege, bEnabled))//上传用户信息到内存
{
axCZKEM1.SetUserTmpStr(iMachineNumber, idwEnrollNumber, idwFingerIndex, sTmpData);//上传指纹信息到内存
// MSG("上传用户" + idwEnrollNumber.ToString() + "信息成功,指纹ID" + idwFingerIndex + ",指纹长度" + sTmpData.Length + "");
}
else
{
axCZKEM1.GetLastError(ref idwErrorCode);
axCZKEM1.EnableDevice(iMachineNumber, true);
MessageBox.Show("Operation failed,ErrorCode=" + idwErrorCode.ToString(), "Error");
return;
}
}
else//一个用户拥有多个指纹模板的情况
{
axCZKEM1.SetUserTmpStr(iMachineNumber, idwEnrollNumber, idwFingerIndex, sTmpData);//上传指纹模板
// MSG("上传用户" + idwEnrollNumber.ToString() + "信息成功,指纹ID" + idwFingerIndex + ",指纹长度" + sTmpData.Length + "");
}
iLastEnrollNumber = idwEnrollNumber;//动态地改变值
}
axCZKEM1.BatchUpdate(iMachineNumber);//上传所有信息到内存
axCZKEM1.RefreshData(iMachineNumber);//机器数据刷新
axCZKEM1.EnableDevice(iMachineNumber, true);//启用设备
}
else
{
// MSG("数据库里没有数据,请先在线上传指纹!");
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
axCZKEM1.EnableDevice(iMachineNumber, true);
axCZKEM1.Disconnect();
}
}
}
}
}
private void MSG(string body)
{
this.BeginInvoke((MethodInvoker)(() =>
{
dgvMessages.Rows.Add(new string[] { (dgvMessages.Rows.Count + 1).ToString(), body, DateTime.Now.ToString() });
dgvMessages.FirstDisplayedScrollingRowIndex = dgvMessages.Rows.Count - 1;
}));
}