private void btnStart_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { if (string.IsNullOrEmpty(ccbNick.Text)) { XtraMessageBox.Show("请选择店铺!"); return; } #region 买家自定义类目 //读取买家自定义类目列表中被选中的子节点 string sellercids = string.Empty; foreach (TreeListNode node in treeListSellerCat.Nodes) { if (node.HasChildren) { foreach (TreeListNode childNode in node.Nodes) { if (childNode.CheckState == CheckState.Checked) { sellercids += string.Format("{0},", childNode.Tag.ToString()); } } } else { if (node.CheckState == CheckState.Checked) { sellercids += string.Format("{0},", node.Tag.ToString()); } } } itemreq.SellerCids = sellercids.TrimEnd(','); #endregion /*在这里判断stockItem中是否存在此商品,不存在要生成一个*/ string session = SystemHelper.GetSessionKey(ccbNick.Text); ItemRsp addRsp = TopService.ItemAdd(session, itemreq); //上传成功执行 if (addRsp != null && addRsp.Item != null) { ItemRsp rsp = TopService.ItemGet(session, ccbNick.Text, addRsp.Item.Iid, null); Alading.Entity.Item item = new Alading.Entity.Item(); if (rsp.Item == null) { rsp.Item = itemreq as Taobao.Entity.Item; } UIHelper.ItemCopyData(item, rsp.Item); ItemService.AddItem(item); } } catch (Exception ex) { XtraMessageBox.Show(ex.Message); } }
void worker_DoWork(object sender, DoWorkEventArgs e) { ItemTask itemTask = e.Argument as ItemTask; List <Taobao.Entity.Item> items = itemTask.ItemList; BackgroundWorker worker = (BackgroundWorker)sender; int totalCount = itemTask.totalCount; for (int i = 0; i < items.Count; i++) { lock (lockObject) { //进度递增 progressCurrent++; } if (worker.CancellationPending) { e.Cancel = true; break; } try { ItemRsp myrsp = TopService.ItemGet(SystemHelper.GetSessionKey(items[i].Nick), items[i].Nick, items[i].Iid, string.Empty); if (myrsp != null && myrsp.Item != null) { Alading.Entity.Item item = new Alading.Entity.Item(); UIHelper.ItemCopyData(item, myrsp.Item); //添加到数据库,如果存在则更新,否则添加 ReturnType result = ItemService.AddItem(item); //计算进度条值 int progress = (int)((float)progressCurrent / (float)totalCount * 100); if (result == ReturnType.Success) { UserState state = new UserState(); state.Index = i + 1; state.Iid = items[i].Iid; state.ItemTaskIndex = itemTask.Index; state.Message = "下载成功!"; worker.ReportProgress(progress, state); } else { UserState state = new UserState(); state.Message = "数据库存储发生错误。"; state.Index = i + 1; state.Iid = items[i].Iid; state.ItemTaskIndex = itemTask.Index; //发生数据库错误的报告 worker.ReportProgress(-1, state); } } } catch (Exception ex) { UserState state = new UserState(); state.Message = ex.Message; state.Index = i + 1; state.Iid = items[i].Iid; state.ItemTaskIndex = itemTask.Index; //发生下载错误的报告 worker.ReportProgress(-1, state); } } e.Result = itemTask.Index; }
void worker_DoWork(object sender, DoWorkEventArgs e) { ItemTask itemTask = e.Argument as ItemTask; List <string> iidlist = itemTask.iidList; BackgroundWorker worker = (BackgroundWorker)sender; int n = iidlist.Count; for (int i = 0; i < n; i++) { //完成数加1 itemCompleteNum++; if (isCancel) { e.Cancel = true; break; } string iid = iidlist[i]; ReturnType returntype = ItemService.IsItemExisted(iid); if (checkEditIsUpdate.CheckState != CheckState.Checked && returntype == ReturnType.PropertyExisted) { /*跳过本次下载*/ worker.ReportProgress(-2, string.Format("线程号{0},数据库已存在第{1}个宝贝,跳过下载", itemTask.threadIndex, i + 1)); continue; } string session = itemTask.sessionKey; string nick = itemTask.shopNic; try { ItemRsp myrsp = TopService.ItemGet(session, nick, iid, string.Empty); if (myrsp != null && myrsp.Item != null) { Alading.Entity.Item item = new Alading.Entity.Item(); UIHelper.ItemCopyData(item, myrsp.Item); ItemService.AddItem(item, checkEditIsUpdate.Checked); } else { if (failedDownload.iidList == null) { failedDownload.iidList = new List <string>(); } failedDownload.iidList.Add(iid); failedDownload.shopNick = nick; failedDownload.sessionKey = session; } //int progress = (int)((float)(i + 1) / (float)n * 100); worker.ReportProgress(itemCompleteNum, string.Format("{0}已成功下载第{1}个宝贝,线程号{2}", DateTime.Now.ToString(Constants.DATE_TIME_FORMAT), itemCompleteNum, itemTask.threadIndex)); } catch (System.Exception ex) { MyException myexc = new MyException(); myexc.position = i + 1; myexc.iid = iid; myexc.msg = ex.Message; myexc.threadIndex = itemTask.threadIndex; worker.ReportProgress(-1, myexc); if (failedDownload.iidList == null) { failedDownload.iidList = new List <string>(); } failedDownload.iidList.Add(iid); failedDownload.shopNick = nick; failedDownload.sessionKey = session; } } e.Result = itemTask.threadIndex; }