示例#1
0
        /// <summary>
        /// 判断本任务以及所有子任务是否完毕
        /// 如果完毕则通知父页
        /// </summary>
        /// <param name="snifferManager"></param>
        public void PageDone(SnifferManager snifferManager)
        {
            //snifferManager?.OnPageDoneEventHandler(this);
            //if (this.Config.Plug != null)
            //    this.Config.Plug.OnPageDoneEventHandler(this);

            //所有子页已完成,则标注已完成状态
            if (SubPages.All(x => x.Done && x.SnifferState == SnifferState.Complate))
            {
                SnifferState = SnifferState.Complate;
            }

            if (ParentPage == null)
            {
                if (SubPages.All(x => x.Done && x.SnifferState == SnifferState.Complate))
                {
                    //触发顶级页采集完毕事件
                    snifferManager?.OnRootPageDoneEventHandler(this, snifferManager.Context);
                    if (this.Config.Plug != null)
                    {
                        this.Config.Plug.OnRootPageDoneEventHandler(this, snifferManager.Context);
                    }
                }
            }
            else
            {
                //当前页以及当前页的所有子页完毕
                if (SnifferState == SnifferState.Complate)
                {
                    if (Config.PageType == PageType.DetailPage)
                    {
                        //当前详细页以及详细页内容采集完毕
                        snifferManager?.OnDetailPageDoneEventHandler(this as DetailPage, snifferManager.Context);
                        if (this.Config.Plug != null)
                        {
                            this.Config.Plug.OnDetailPageDoneEventHandler(this as DetailPage, snifferManager.Context);
                        }
                    }
                    else
                    {
                        //列表页以及所有子页采集完毕
                        snifferManager?.OnListPageDoneEventHandler(this as ListPage, snifferManager.Context);
                        if (this.Config.Plug != null)
                        {
                            this.Config.Plug.OnListPageDoneEventHandler(this as ListPage, snifferManager.Context);
                        }
                    }

                    //触发父页 PageDone
                    ParentPage.PageDone(snifferManager);
                }
            }
        }