private void CallBack(IAsyncResult iar) { DeleCustInfoByPTID dele = ((System.Runtime.Remoting.Messaging.AsyncResult)iar).AsyncDelegate as DeleCustInfoByPTID; if (dele != null) { lock (dic_CustInfo) { actualCount += 1; string[] custInfo = dele.EndInvoke(iar); dic_CustInfo.Add(custInfo[0], custInfo); } } }
/// <summary> /// 将CustInfo的信息拼接到所要导出的DataTable中 /// </summary> /// <param name="TTName"></param> /// <param name="custIDColumnName"></param> /// <param name="projectID"></param> /// <param name="DbdataDt"></param> private void GetTogetherCustInfo(string custIDColumnName, int projectID, DataTable DbdataDt) { DataTable dt_CustInfo = BLL.ProjectInfo.Instance.GetExportCustInfoByTempt(custIDColumnName, projectID.ToString()); int custInfoCount = DbdataDt.Rows.Count; for (int i = 0; i < custInfoCount; i++) { string PTID = DbdataDt.Rows[i]["任务ID"].ToString(); DataRow[] dt_custInfoByPTID = dt_CustInfo.Select(" ptid='" + PTID + "'"); if (dt_custInfoByPTID.Length == 1) { exportCount += 1; DeleCustInfoByPTID deleGetCustInfo = new DeleCustInfoByPTID(GetCustInfoDataRow); deleGetCustInfo.BeginInvoke(PTID, dt_custInfoByPTID[0], CallBack, null); } } while (actualCount != exportCount) { System.Threading.Thread.Sleep(500); } for (int p = 0; p < custInfoCount; p++) { string PTID = DbdataDt.Rows[p]["任务ID"].ToString(); if (dic_CustInfo.ContainsKey(PTID)) { string[] array_CustDatas = dic_CustInfo[PTID]; for (int k = 0; k < array_CustColumns.Length; k++) { DbdataDt.Rows[p][array_CustColumns[k]] = array_CustDatas[k + 1]; } } } }