private async void bt_Start_Click(object sender, EventArgs e)
        {
            try
            {
                if (tabControl1.SelectedTab == tabPage1)
                {
                    Log.Show(rtb_Log, "正在入库...", Color.Green);
                    string errorMessage = string.Empty;
                    await Task <bool> .Run(async() =>
                    {
                        await FillStandardByTreeView();
                        return(dbStandardGateway.Insert(standard, out errorMessage));
                    }).ContinueWith <bool>((task) =>
                    {
                        if (task.Result)
                        {
                            Log.Show(rtb_Log, "已插入" + dbStandardGateway.SumRows + "行数据。", Color.Green);
                            if (dbStandardGateway.SumRows != 0)
                            {
                                Log.Show(rtb_Log, "入库成功。", Color.Green);
                            }

                            return(true);
                        }
                        else
                        {
                            Log.Show(rtb_Log, "入库失败:" + errorMessage, Color.Red);
                        }

                        return(false);
                    }, TaskScheduler.FromCurrentSynchronizationContext()).ContinueWith(async(task) =>
                    {
                        if (task.Result)
                        {
                            await RefreshStandardsCheckBox(standard);
                        }
                    }, TaskScheduler.FromCurrentSynchronizationContext());
                }
                else if (tabControl1.SelectedTab == tabPage2)
                {
                    if (clb_Preview.Items.Count == 0)
                    {
                        return;
                    }

                    List <int> clbCheckedIndexs = GetCLBCheckedIndex();
                    await Task <List <CreateTechnologyFileResult> > .Run(() =>
                    {
                        TechnologyOperation to = new TechnologyOperation(clbCheckedIndexs, technologyProducts, itemMajorBlocks);
                        to.Execute();
                        return(to.CreateTechnologyFileResults);
                    }).ContinueWith((task) =>
                    {
                        for (int i = 0; i < clb_Preview.Items.Count; i++)
                        {
                            var result = task.Result.Where(s => s.Index == i).SingleOrDefault();
                            if (result == null)
                            {
                                clb_Preview.Items[i] = RestoreCLBItemContent(clb_Preview.Items[i]);
                            }
                            else
                            {
                                if (result.IsSuccess)
                                {
                                    if (result.IsExistRepeatFile)
                                    {
                                        clb_Preview.Items[i] = RestoreCLBItemContent(clb_Preview.Items[i])
                                                               + "--状态:【已存在】";
                                    }
                                    else
                                    {
                                        clb_Preview.Items[i] = RestoreCLBItemContent(clb_Preview.Items[i])
                                                               + "--状态:【已创建】";
                                    }
                                }
                                else
                                {
                                    clb_Preview.Items[i] = RestoreCLBItemContent(clb_Preview.Items[i])
                                                           + "--状态:【运行出错:" + result.ErrorMessage + "】";
                                }
                            }
                        }

                        Log.Show(rtb_Log, "执行完成。", Color.Green);
                    }, TaskScheduler.FromCurrentSynchronizationContext());
                }
            }
            catch (Exception ex)
            {
                Log.Show(rtb_Log, "运行出错:" + ex.Message, Color.Red);
            }
        }
        private async void bt_Check_Click(object sender, EventArgs e)
        {
            try
            {
                if (tabControl1.SelectedTab == tabPage2)
                {
                    bt_Start.Enabled = true;
                    Log.Show(rtb_Log, "正在生成预览,这可能需要一段时间...", Color.Green);
                    clb_Preview.Items.Clear();
                    technologyProducts = new List <TechnologyProduct>();
                    itemMajorBlocks    = new List <ItemMajorBlock>();
                    await Task.Run(() =>
                    {
                        List <TechnologyProduct> checkedTechnologies = GetCheckedTechnologies();
                        foreach (TechnologyProduct tp in checkedTechnologies)
                        {
                            if (!tp.IsValid)
                            {
                                continue;
                            }
                            // 校验条文集合
                            string errorItem = string.Empty;
                            if (!IsValidedItems(tp.Items, out errorItem))
                            {
                                this.Invoke(new Action(() =>
                                {
                                    Log.Show(rtb_Log, "推荐技术:【" + tp.Name + "】对应条文【" + errorItem + "】解析错误,请检查格式", Color.Red);
                                    bt_Start.Enabled = false;
                                }));
                            }
                            // 加载技术信息
                            TechnologyOperation to = new TechnologyOperation(currentStandard, dbStandardGateway, tp);
                            to.LoadItemMajorBlocks();
                            if (to.ItemMajorBlocks == null)
                            {
                                continue;
                            }
                            foreach (var imb in to.ItemMajorBlocks)
                            {
                                this.Invoke(new Action(() =>
                                {
                                    clb_Preview.Items.Add(string.Format("条文:【{0}】对应的专业块路径为:【{1}】",
                                                                        imb.Item, imb.ToString()));
                                }));

                                technologyProducts.Add(tp);
                                itemMajorBlocks.Add(imb);
                            }
                        }
                    });

                    if (itemMajorBlocks.Count() == 0)
                    {
                        Log.Show(rtb_Log, "无预览生成。", Color.Green);
                    }
                    else
                    {
                        Log.Show(rtb_Log, "已生成" + itemMajorBlocks.Count() + "行数据,请在预览框查看。", Color.Green);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Show(rtb_Log, "运行出错:" + ex.Message, Color.Red);
            }
        }