private void btnOK_Click(object sender, EventArgs e)
{
if (rbtnAAR.Checked)
{
ImportThread();//最耗时间的
ClealAllControl();
}
else
{
ImportExcel();
ClealAllControl();
}
}
#region begion Inport
bool isAAR = false;
private void ImportThread()
{
DateTime t1 = DateTime.Now;
ImportPrintMileage.isRunning = true;
(new BLLManager()).Init_InsertEmpty(); bool IsImport = false;
bool isPrint = false;
isAAR = this.rbtnAAR.Checked;
IsImport = this.chkImport.Checked;
isPrint = this.chkPrint.Checked; #region for AAR
if (isAAR)
{
#region import AAR
string s0000 = Guid.Empty.ToString();
if (chkImport.Checked == true)
{
string file = string.Empty;
OpenFileDialog fileDialog1 = new OpenFileDialog();
fileDialog1.Filter = "dat files (*.dat)|*.dat";
fileDialog1.FilterIndex = 1;
fileDialog1.RestoreDirectory = true;
if (fileDialog1.ShowDialog() == DialogResult.OK)
{
file = fileDialog1.FileName;
}
else
{
return;
} if (File.Exists(file) == false)
{
MessageBox.Show("'" + file + "'" + " not exist.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
} CarHireManager cm = new CarHireManager();
List<CarHireInfo> list = new List<CarHireInfo>();//
try
{ list = (cm).GetListForDATfile(file);
}
catch (Exception ex)
{
MessageBox.Show("Please check '" + file + "' ", "File data error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
} this.btnOK.Refresh();
this.btnCancel.Refresh();
this.txtInvoiceNo_CheckNum.Refresh();
this.label4.Refresh();
cm.InsertCarHireForAAR(list);
} #endregion if (IsImport)
{
MessageBox.Show("begion inport!");
this.UpdStMile();
this.UpdAAREql();
this.UpdCarMile();
MessageBox.Show("data has been inported!");
} this.lbMsg.Text = "";
}
else //excel
{
this.UpdCarType();
if (isAAR == false)
{
this.UpdCarHireForNotAAR();
}
if ((isAAR == false) && (IsImport))
{
this.UpdLessee();
}
} #endregion DateTime t2 = DateTime.Now;
int tt2 = 3; if (isPrint)
{
prnImport();
prnBlankContracts();
}
ImportPrintMileage.isRunning = false;
this.chkImport.Checked = false;
this.chkImport.Enabled = false;
}
#endregion
飞哥在执行数据导入操作的时候特别耗费时间,有没有办法解决下! 是不是多线程操作呢? 还是backgroundworker? 给点代码提示! backgroundworker这个我试了,不太会用!
一直开发web,对c#多线程不是太了解!能不能给点代码,参考一下!谢谢!
需求就是能够耗费尽量少的时间,导入数据文件,因为我再改之前人的代码,所以尽量在能不改变原有代码!
---------------
这个做不到。提高整体运行时间只能并行处理多个,就必须更改现有代码。但是可以异步的去处理,此时界面UI可用。 和ajax一样
那你就在主线程上开启一个线程去做导入的工作即可类似的DEMOhttp://blog.csdn.net/sandy945/article/details/6948702