c# 使用 Task task = Task.Run(() =>),执行代码后出结果后,主窗体(也就是上一级窗体)出错
错误提示如下图
Frm_JmMll frmJmMll = new Frm_JmMll(); //f4.StartPosition = FormStartPosition.CenterScreen;
frmJmMll.StartPosition = FormStartPosition.CenterScreen;
frmJmMll.ShowDialog();
代码如图
Task task = Task.Run(() =>
{
data_JmMll = dd.OpenFileWS(tbpathE.Text);//调用打开,读取用户打开的txt文件,赋值给data_JmMll集合
DataTable dt_JmMll = new DataTable("Number");
DataColumn dc00 = dt_JmMll.Columns.Add("序号", typeof(string));
DataColumn dc000 = dt_JmMll.Columns.Add("供应商", typeof(string));
DataColumn dc1 = dt_JmMll.Columns.Add("条码", typeof(string));
DataColumn dc2 = dt_JmMll.Columns.Add("名称", typeof(string));
DataColumn dc5 = dt_JmMll.Columns.Add("类别", typeof(string));
DataColumn dc3 = dt_JmMll.Columns.Add("进价", typeof(string));
DataColumn dc4 = dt_JmMll.Columns.Add("售价", typeof(string));
DataColumn dc6 = dt_JmMll.Columns.Add("库存", typeof(string));
int Itbtrue = 0;int Itbgood = 0;int k = 1;
InsertEvent += new Insert(BsMerge_InsertEvent);//使用事件方法,同步显示数据 避免假死出现
SetProgressbar(0, data_JmMll.Count);
for (int j = 0; j < data_JmMll.Count; j++)
{
Gressbar(j);//调用方法,赋值给MgBar1
string aa = data_JmMll[j].ToString().Replace("\t", "").Replace(" ", "").Trim();
DataTable dt1 = Stock.CPublic.DT("SELECT t_goods.vendorno,t_goods.barcode,t_goods.itemname,s_class.descr as 类别,t_goods.purprice,t_goods.saleprice,t_depot_h.itemqty as 库存 FROM t_depot_h,t_goods,s_class WHERE ( t_depot_h.itemno = t_goods.itemno ) and ( s_class.classcode = t_goods.classcode ) and t_goods.barcode='" + aa + "' ");
if (dt1.Rows.Count > 0)//Rows.Count =0 代表数据库没记录即是新品
{
DataRow dr;
dr = dt_JmMll.NewRow();
dr["序号"] = j + 1;//使用j 保留txt对应的序号
dr["条码"] = aa;
dr["供应商"] = dt1.Rows[0][0].ToString().Replace("\t", "").Replace(" ", "").Trim();
dr["名称"] = dt1.Rows[0][2].ToString().Replace("\t", "").Replace(" ", "").Trim();
dr["类别"] = dt1.Rows[0][3].ToString().Replace("\t", "").Replace(" ", "").Trim();
dr["进价"] = dt1.Rows[0][4].ToString().Replace("\t", "").Replace(" ", "").Trim();
dr["售价"] = dt1.Rows[0][5].ToString().Replace("\t", "").Replace(" ", "").Trim();
dr["库存"] = dt1.Rows[0][6].ToString().Replace("\t", "").Replace(" ", "").Trim();
dt_JmMll.Rows.Add(dr);
Itbtrue++;
k++;
}
Itbgood++;
if (InsertEvent != null) { BsMerge_InsertEvent(null, j + 1, data_JmMll.Count); }//使用事件,动态显示数据,且窗口不假死
}
dataGridView1.DataSource = dt_JmMll;
});