private void SaveBtn_Click(object sender, EventArgs e)
        {
            if (catalogueListBox.SelectedIndex < 0)
            {
                return;
            }
            var catalogueInfo = catalogueListBox.SelectedItem as Catalogue;
            if (catalogueInfo == null)
            {
                return;
            }
            var stopwatch = new Stopwatch();
            stopwatch.Start();
            var siteStoreInfo = _storeInfoList.Find(x => x.storeId == catalogueInfo.StoreId);
            var oldStoreInfo = textBox4.Tag as StoreInfoEntity;
            var storeInfoEntity = GetStoreInfoEntity(catalogueInfo, oldStoreInfo, siteStoreInfo);
            var storeBll = new StoreInfoBll();
            var storeInfoBll = new Maticsoft.BLL.StoreInfo();
            var storePictureBll = new Maticsoft.BLL.StorePicture();
            var storePicture = new Maticsoft.Model.StorePicture();
            storePicture.PID = Guid.NewGuid().ToString();
            storePicture.PictureName = string.Format("{0}.jpg", storeInfoEntity.BizID);
            storePicture.PicType = "Shop";
            storePicture.PicturePath = siteStoreInfo.StorePictureHref;
            storePicture.StoreId = storeInfoEntity.BizID;
            if (storeBll.Exists(storeInfoEntity.BizID))
            {
                storeBll.Update(storeInfoEntity);
                storeInfoBll.Update(siteStoreInfo);
            }
            else
            {
                storeInfoEntity.ShortID = storeBll.GetMaxShortID();
                storeInfoBll.Add(siteStoreInfo);
                storeBll.Add(storeInfoEntity);
            }
            if (!string.IsNullOrEmpty(storePicture.PicturePath))
            {
                storePictureBll.Remove(string.Format("PicType = 'Shop' and StoreId = '{0}'", storeInfoEntity.BizID));
                storePictureBll.Add(storePicture);
            }
            var saveStoreEntity = new SaveStoreEntity();
            saveStoreEntity.CataloEventHandler += UpdateIncrement;
            saveStoreEntity.InitProgress();
            var specialTagList = chlBoxSpecialTag.CheckedItems.Cast<SpecialTag>().ToList();
            Action<StoreInfoEntity, List<SpecialTag>> storeSpecialTagDelegate = saveStoreEntity.SaveStoreSpecialTag;
            storeSpecialTagDelegate.BeginInvoke(storeInfoEntity, specialTagList, null, null);

            var cookingStylesList = chbCookingStyles.CheckedItems.Cast<CookingStyles>().ToList();
            Action<StoreInfoEntity, IEnumerable<CookingStyles>> cookingStylesDelegate = saveStoreEntity.SaveCookingStyles;
            cookingStylesDelegate.BeginInvoke(storeInfoEntity, cookingStylesList, null, null);

            var cityLocalTagEntityList = clbStoreTag.CheckedItems.Cast<CityLocalTagEntity>().ToList();
            Action<StoreInfoEntity, IEnumerable<CityLocalTagEntity>> cityLocalTagEntityDelegate = saveStoreEntity.SaveCityLocalTagEntity;
            cityLocalTagEntityDelegate.BeginInvoke(storeInfoEntity, cityLocalTagEntityList, null, null);

            if (chbDish.Checked)
            {
                Action<StoreInfoEntity, StoreInfo> dishesDelegate = saveStoreEntity.SaveDishes;
                dishesDelegate.BeginInvoke(storeInfoEntity, siteStoreInfo, null, null);
            }
            if (chbPic.Checked)
            {
                Action<StoreInfoEntity, StoreInfo> storePicturesDelegate = saveStoreEntity.SaveStorePictures;
                storePicturesDelegate.BeginInvoke(storeInfoEntity, siteStoreInfo, null, null);
            }

            saveStoreEntity.DoProgress();
            foreach (var selectedIndex in clbStoreTag.CheckedIndices)
            {
                clbStoreTag.SetItemCheckState((int)selectedIndex, CheckState.Unchecked);
            }
            saveStoreEntity.DoProgress();
            foreach (var selectedIndex in chlBoxSpecialTag.CheckedIndices)
            {
                chlBoxSpecialTag.SetItemCheckState((int)selectedIndex, CheckState.Unchecked);
            }
            saveStoreEntity.DoProgress();
            foreach (var selectedIndex in chbCookingStyles.CheckedIndices)
            {
                chbCookingStyles.SetItemCheckState((int)selectedIndex, CheckState.Unchecked);
            }
            saveStoreEntity.DoProgress();
            stopwatch.Stop();
            Invoke(_showMessageBox, string.Format(@"{0}保存成功,耗时{1}毫秒", storeInfoEntity.StoreName, stopwatch.ElapsedMilliseconds));
            catalogueListBox.SetItemCheckState(catalogueListBox.SelectedIndex, CheckState.Checked);
            if (catalogueListBox.SelectedIndex < catalogueListBox.Items.Count - 1)
            {
                catalogueListBox.SelectedIndex += 1;
            }
            SetCatalogueListBox();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            var actionStoreInfoEntity = new Action<StoreInfoEntity>(store => listBox1.Items.Add(string.Format("{0}{1}", store.BizID, store.StoreName)));
            var storeCount = 0;
            try
            {
                CreatePath();
                var cityInfo = cbBoxCity.SelectedItem as Maticsoft.Model.City;
                if (cityInfo == null)
                {
                    return;
                }
                var storeInfoBll = new StoreInfoBll();
                var storeID = txtStoreID.Text;
                var whereStringBuilder = new StringBuilder();
                whereStringBuilder.Append(string.Format("CityID = '{0}'", cityInfo.CityID));
                if (!string.IsNullOrWhiteSpace(storeID))
                {
                    whereStringBuilder.Append(string.Format("and BizID = '{0}'", storeID));
                }
                var storeList = storeInfoBll.GetModelList(whereStringBuilder.ToString()) ?? new List<StoreInfoEntity>();
                storeCount = storeList.Count;
                var storePicture = new StorePicture();
                Action<List<StoreInfoEntity>> action = sList =>
                {
                    foreach (var storeInfoEntity in sList)
                    {
                        var storePictureList =
                            storePicture.GetModelList(string.Format("StoreId = '{0}'", storeInfoEntity.BizID)) ??
                            new List<Maticsoft.Model.StorePicture>();
                        //Parallel.ForEach(storePictureList, pictureInfo =>
                        if (string.IsNullOrEmpty(storeInfoEntity.ShortID))
                        {
                            storeInfoEntity.ShortID = storeInfoBll.GetMaxShortID();
                            storeInfoBll.Update(storeInfoEntity);
                        }
                        foreach (var pictureInfo in storePictureList)
                        {
                            if (pictureInfo.PicType == "Shop" && storeInfoEntity.StorePhoto != pictureInfo.PictureName)
                            {
                                storeInfoEntity.StorePhoto = pictureInfo.PictureName;
                                storeInfoBll.Update(storeInfoEntity);
                            }
                            var picPath = string.Format(PicturePath, pictureInfo.PicType);
                            var picThumbnail = string.Format(PictureThumbnail, pictureInfo.PicType);
                            try
                            {
                                db.DownFile(pictureInfo.PicturePath.Replace(@"/300_200/", "/").Replace("/320_0/", "/"),
                                    picPath + pictureInfo.PictureName);
                            }
                            catch (Exception exception)
                            {
                                try
                                {
                                    db.DownFile(
                                        pictureInfo.PicturePath.Replace(@"/300_200/", "/").Replace("/320_0/", "/"),
                                        picPath + pictureInfo.PictureName);
                                }
                                catch
                                {
                                    continue;
                                }
                            }
                            db.ZoomAuto(picPath + pictureInfo.PictureName, picThumbnail + pictureInfo.PictureName, 320,
                                240);
                            //生成缩略图
                            db.ZoomAuto(picPath + pictureInfo.PictureName,
                                picThumbnail + "640_480_" + pictureInfo.PictureName,
                                640, 480); //生成缩略图
                            db.ZoomAuto(picPath + pictureInfo.PictureName,
                                picThumbnail + "320_240_" + pictureInfo.PictureName,
                                320, 240); //生成缩略图
                            db.ZoomAuto(picPath + pictureInfo.PictureName,
                                picThumbnail + "160_120_" + pictureInfo.PictureName,
                                160, 120); //生成缩略图
                            //});
                        }
                        QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
                        qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
                        qrCodeEncoder.QRCodeScale = 4;
                        qrCodeEncoder.QRCodeVersion = 8;
                        qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;

                        Bitmap image;
                        String data = "http://www.51k7.com/wap/shop.aspx?sid=" + storeInfoEntity.ShortID;
                        image = qrCodeEncoder.Encode(data);
                        image.Save(@"./imagefiles/QrCode/" + storeInfoEntity.ShortID + ".png");
                        StoreInfoEntity entity = storeInfoEntity;
                        this.Invoke(actionStoreInfoEntity, entity);
                    }
                };
                Task task = new Task(() => action(storeList));
                task.Start();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            MessageBox.Show(string.Format("完成下载{0}家商家", storeCount));
        }