Пример #1
0
        public string _Analyze(string txt)
        {
            string r = string.Empty;

            try
            {
                while (tagger == null)
                {
                    _Init();
                    if (tagger == null)
                    {
                        System.Threading.Thread.Sleep(100);
                    }
                }
                r = tagger.parse(txt);
            }
            catch (Exception e)
            {
                ReportManage.ErrReport(this, "形態素解析に失敗しました:" + txt);
            }
            finally
            {
                tagger.Dispose();
                tagger = null;
            }
            return(r);
        }
Пример #2
0
        /// <summary>
        /// 新增(传入事务处理)
        /// </summary>
        /// <param name="p_BE">要新增的实体</param>
        /// <param name="sqlTrans">事务类</param>
        public void RAdd(ReportManage p_BE, BaseEntity[] p_BE2, ReportFile p_BE3, IDBTransAccess sqlTrans)
        {
            try
            {
                this.RAdd(p_BE, sqlTrans);
                ReportManageDtsRule ruledts = new ReportManageDtsRule();
                ruledts.RSave(p_BE, p_BE2, sqlTrans);//保存从表

                ReportFileRule ruleFile = new ReportFileRule();
                p_BE3.FileID = p_BE.ID;
                ruleFile.RAdd(p_BE3, sqlTrans);

                string sql = " UPDATE Data_ReportManage SET  FileID = " + p_BE3.ID;
                sql += " WHERE ID =" + p_BE.ID;
                sqlTrans.ExecuteNonQuery(sql);
            }
            catch (BaseException)
            {
                throw;
            }
            catch (Exception E)
            {
                throw new BaseException(E.Message);
            }
        }
Пример #3
0
        /// <summary>
        /// このクラスでの実行すること。
        /// </summary>
        /// <param name="runChildren"></param>
        public override void Run(bool runChildren)
        {
            SetText(GetText());
            var login = this.GetAncestorRawler().OfType <TwitterLogin>().First();

            if (login != null)
            {
                var r = login.Token.Statuses.Update(status => GetText());
                if (r != null)
                {
                    // Tweet posted successfully!
                }
                else
                {
                    ReportManage.ErrReport(this, "ツイートに失敗しました。");
                    // Something bad happened
                }
            }
            else
            {
                ReportManage.ErrReport(this, "上流にTwitterLoginがありません。");
            }



            base.Run(runChildren);
        }
Пример #4
0
        public string Analyze(string txt)
        {
            string r = null;

            try
            {
                while (r == null)
                {
                    if (mecabDotNet == null)
                    {
                        Init();
                    }
                    r = mecabDotNet.mecab_sparse_tostr(txt);
                    if (r == null)
                    {
                        System.Threading.Thread.Sleep(100);
                        Init();
                    }
                }
            }
            catch (Exception e)
            {
                ReportManage.ErrReport(this, "形態素解析に失敗しました:" + e.Message + "\ttext:" + txt);
            }

            return(r);
        }
Пример #5
0
        /// <summary>
        /// 获得实体
        /// </summary>
        /// <returns></returns>
        private ReportManage EntityGet()
        {
            ReportManage entity = new ReportManage();

            entity.ID = HTDataID;
            return(entity);
        }
Пример #6
0
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="p_BE">要删除的实体</param>
        /// <param name="sqlTrans">事务类</param>
        public void RDelete(BaseEntity p_BE, IDBTransAccess sqlTrans)
        {
            try
            {
                this.CheckCorrect(p_BE);
                ReportManage    entity  = (ReportManage)p_BE;
                ReportManageCtl control = new ReportManageCtl(sqlTrans);


                string sql = "DELETE FROM Data_ReportManageDts WHERE MainID=" + entity.ID.ToString();
                sqlTrans.ExecuteNonQuery(sql);//删除原单据明细数据

                sql = "DELETE FROM Data_ReportFile WHERE FileID=" + entity.ID.ToString();
                sqlTrans.ExecuteNonQuery(sql);//删除原单据明细数据

                control.Delete(entity);
            }
            catch (BaseException)
            {
                throw;
            }
            catch (Exception E)
            {
                throw new BaseException(E.Message);
            }
        }
Пример #7
0
        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="p_BE">要新增的实体</param>
        public void RAdd(ReportManage p_BE, BaseEntity[] p_BE2, ReportFile p_BE3)
        {
            try
            {
                IDBTransAccess sqlTrans = TransSysUtils.GetDBTransAccess();
                try
                {
                    sqlTrans.OpenTrans();

                    this.RAdd(p_BE, p_BE2, p_BE3, sqlTrans);

                    sqlTrans.CommitTrans();
                }
                catch (Exception TE)
                {
                    sqlTrans.RollbackTrans();
                    throw TE;
                }
            }
            catch (BaseException)
            {
                throw;
            }
            catch (Exception E)
            {
                throw new BaseException(E.Message);
            }
        }
Пример #8
0
        /// <summary>
        /// このクラスでの実行すること。
        /// </summary>
        /// <param name="runChildren"></param>
        public override void Run(bool runChildren)
        {
            var xaml = GetText();

            try
            {
                var td = TweetData.Parse(xaml);
                this.SetText(td.GetTweetDataElement(DataElement));
                base.Run(runChildren);

                //var obj = System.Xaml.XamlServices.Parse(xaml);
                //if (obj is TweetData)
                //{
                //    var td = obj as TweetData;
                //    this.SetText(td.GetTweetDataElement(DataElement));
                //    base.Run(runChildren);
                //}
                //else
                //{
                //    ReportManage.ErrReport(this, "TweetDataの解釈に失敗しました。");
                //}
            }
            catch
            {
                ReportManage.ErrReport(this, "TweetDataの解釈に失敗しました。");
            }
        }
Пример #9
0
        public RawlerBase GetRawlerBase(string xaml)
        {
            object obj = null;

            try
            {
                obj = System.Xaml.XamlServices.Parse(textEditor.Text);
            }
            catch (Exception ex)
            {
                ReportManage.ErrReport(new RawlerBase(), "XAMLの形式がおかしいです" + ex.Message);
            }
            if (obj == null)
            {
                return(null);
            }
            if ((obj is Rawler.Tool.RawlerBase) == false)
            {
                ReportManage.ErrReport(new RawlerBase(), "キャストできませんでした。XAMLの形式がおかしいです");
                return(null);
            }
            else
            {
                return(obj as Rawler.Tool.RawlerBase);
            }
        }
Пример #10
0
 /// <summary>
 ///  ElementAt を適応する。
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="list"></param>
 /// <returns></returns>
 IEnumerable <T> DoElementAt <T>(IEnumerable <T> list)
 {
     if (list.Count() == 0)
     {
         return(list);
     }
     if (ElementAt.HasValue)
     {
         try
         {
             var l = list.ToArray();
             if (ElementAt.Value > -1)
             {
                 return(new T[] { l[ElementAt.Value] });
                 //return new List<T>() { list.ElementAt(ElementAt.Value) };
             }
             else
             {
                 return(new T[] { l[list.Count() + ElementAt.Value] });
                 //   return new List<T>() { list.ElementAt(list.Count() + ElementAt.Value) };
             }
         }
         catch
         {
             ReportManage.ErrReport(this, "ElementAtの値がレンジから外れました。ElementAt:" + ElementAt.Value);
         }
     }
     return(list);
 }
Пример #11
0
        public override void Run(bool runChildren)
        {
            currentFileName = FileName.Convert(this);
            baseFileName    = currentFileName;
            if (currentFileName.Length == 0)
            {
                ReportManage.ErrReport(this, "FileNameがありません");
                return;
            }

            var f     = CheckFileSizeAndCreate(System.IO.File.AppendText(currentFileName));
            int count = 0;
            ActionBlock <string> actionBlock = new ActionBlock <string>((n) => {
                if (count % 10000 == 0)
                {
                    f = CheckFileSizeAndCreate(f);
                }
                f.WriteLine(n);
                ReportManage.Report(this, "NextDataRow");
                count++;
            });

            inputBlock = new BufferBlock <string>();
            inputBlock.LinkTo(actionBlock, new DataflowLinkOptions()
            {
                PropagateCompletion = true
            });
            base.Run(runChildren);
            inputBlock.Complete();
            actionBlock.Completion.Wait();
            f.Close();
        }
Пример #12
0
        /// <summary>
        /// 设置
        /// </summary>
        public override void EntitySet()
        {
            ReportManage entity = new ReportManage();

            entity.ID = HTDataID;
            bool findFlag = entity.SelectByID();


            drpParentID.EditValue    = entity.ParentID;
            drpWinListID.EditValue   = entity.MenuID;
            txtWinListID.Text        = entity.WinListID.ToString();
            txtSeq.Text              = entity.Seq.ToString();
            txtFileName.Text         = entity.FileName.ToString();
            txtReportName.Text       = entity.ReportName.ToString();
            drpReportModelType.Text  = entity.ModelType.ToString();
            drpReportModel.EditValue = entity.ModelID;
            txtRemark.Text           = entity.Remark.ToString();
            txtHeadTypeID.Text       = entity.HeadTypeID.ToString();
            txtSubTypeID.Text        = entity.SubTypeID.ToString();
            OLDModelType             = entity.ModelID.ToString();
            txtWinID.Text            = entity.WinID.ToString();
            // HTDataSubmitFlag = entity.SubmitFlag;
            //HTDataDelFlag = entity.DelFlag;
            if (!findFlag)
            {
            }

            BindGridDts();
        }
Пример #13
0
        /// <summary>
        /// 新增
        /// </summary>
        public override int EntityAdd()
        {
            ReportManageRule rule            = new ReportManageRule();
            ReportManage     entity          = EntityGet();
            ReportFile       entityFile      = new ReportFile();
            ReportFileModel  entityFileModel = new ReportFileModel();

            if (drpReportModelType.EditValue.ToString() == "使用系统模板")
            {
                entityFileModel.ID = SysConvert.ToInt32(drpReportModel.EditValue);
                entityFileModel.SelectByID();
                entityFile.Context  = entityFileModel.Context;
                entityFile.FileName = txtFileName.Text.Trim();
            }
            if (drpReportModelType.EditValue.ToString() == "使用本地文件")
            {
                entityFile.Context  = HttSoft.WinUIBase.FastReport.ConvertToBinaryByPath(txtFilePath.Text.Trim());
                entityFile.FileName = txtFileName.Text.Trim();
            }
            ReportManageDts[] entitydts = EntityDtsGet();
            //entity.SubmitFlag = this.HTSubmitFlagInsertGet();
            rule.RAdd(entity, entitydts, entityFile);

            return(entity.ID);
        }
Пример #14
0
        private void _Init()
        {
            if (tagger != null)
            {
                tagger.Dispose();
                tagger = null;
            }

            try
            {
                if (Args != null)
                {
                    tagger = new MeCab.Tagger(Args);
                }
                else
                {
                    tagger = new MeCab.Tagger();
                }

                if (tagger == null)
                {
                    ReportManage.ErrReport(this, "Mecabの起動に失敗しました。インストールされているか確かめてください。");
                    throw new Exception("Mecabの起動に失敗しました。インストールされているか確かめてください。");
                }
            }
            catch
            {
                ReportManage.ErrReport(this, "Mecabの起動に失敗しました。インストールされているか確かめてください。");
                throw new Exception("Mecabの起動に失敗しました。インストールされているか確かめてください。");
            }
        }
Пример #15
0
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="p_Entity">实体类</param>
        /// <returns>操作影响的记录行数</returns>
        public override int Delete(BaseEntity p_Entity)
        {
            try
            {
                ReportManage MasterEntity = (ReportManage)p_Entity;
                if (MasterEntity.ID == 0)
                {
                    return(0);
                }

                //删除主表数据
                string Sql = "";
                Sql = "DELETE FROM Data_ReportManage WHERE " + "ID=" + SysString.ToDBString(MasterEntity.ID);
                //执行
                int AffectedRows = 0;
                if (!this.sqlTransFlag)
                {
                    AffectedRows = this.ExecuteNonQuery(Sql);
                }
                else
                {
                    AffectedRows = sqlTrans.ExecuteNonQuery(Sql);
                }

                return(AffectedRows);
            }
            catch (BaseException E)
            {
                throw new BaseException(E.Message, E);
            }
            catch (Exception E)
            {
                throw new BaseException(FrameWorkMessage.GetAlertMessage((int)Message.CommonDBDelete), E);
            }
        }
Пример #16
0
        /// <summary>
        /// 删除
        /// </summary>
        public override void EntityDelete()
        {
            ReportManageRule rule   = new ReportManageRule();
            ReportManage     entity = EntityGet();

            //FastReport.DeleteFile(entity.FileName);
            rule.RDelete(entity);
        }
Пример #17
0
        /// <summary>
        /// 构造方法
        /// </summary>
        public ReportAppService(IRepository <Core.CustomDomain.Report.Report, int> reportRepository,
                                ReportManage reportManage

                                )
        {
            _reportRepository = reportRepository;
            _reportManage     = reportManage;
        }
Пример #18
0
 private static void StopWatch()
 {
     if (startDate != null)
     {
         var time = DateTime.Now - startDate;
         ReportManage.Report(null, "経過時間:" + time.ToString(), true, true);
     }
     MessageBox.Show("Complete");
 }
Пример #19
0
 public void Run(RawlerBase parent)
 {
     try
     {
         var type  = parent.GetType();
         var field = type.GetRuntimeProperty(PropertyName);
         var text  = RawlerBase.GetText(string.Empty, Child, parent);
         if (field.PropertyType == typeof(string))
         {
             field.SetValue(parent, text, null);
         }
         else if (field.PropertyType == typeof(int))
         {
             int num;
             if (int.TryParse(text, out num))
             {
                 field.SetValue(parent, num, null);
             }
             else
             {
                 ReportManage.ErrReport(parent, "InitTreeで" + PropertyName + "の値をint型に変換に失敗しました");
             }
         }
         else if (field.PropertyType == typeof(double))
         {
             double num;
             if (double.TryParse(text, out num))
             {
                 field.SetValue(parent, num, null);
             }
             else
             {
                 ReportManage.ErrReport(parent, "InitTreeで" + PropertyName + "の値をdouble型に変換に失敗しました");
             }
         }
         else if (field.PropertyType == typeof(bool))
         {
             if (text.ToLower() == "true")
             {
                 field.SetValue(parent, true, null);
             }
             else if (text.ToLower() == "false")
             {
                 field.SetValue(parent, false, null);
             }
             else
             {
                 ReportManage.ErrReport(parent, "InitTreeで" + PropertyName + "の値をbool型に変換に失敗しました。Valueは" + text);
             }
         }
     }
     catch (Exception ex)
     {
         ReportManage.ErrReport(parent, "InitTreeで" + PropertyName + "でエラーが発生しました。" + ex.Message);
     }
 }
Пример #20
0
        public IEnumerable <string> ReadAPI()
        {
            var login = this.GetUpperRawler <TwitterLogin>();

            if (login == null)
            {
                ReportManage.ErrReport(this, "TwitterLoginをTweetUserTimelineの上流に配置してください");
                return(new List <string>());
            }

            List <long> list = new List <long>();

            Dictionary <string, object> dic = new Dictionary <string, object>()
            {
                { "cursor", cursor },
                { "count", 5000 }
            };

            if (ScreenName.IsNullOrEmpty() == false)
            {
                dic.Add("screen_name", ScreenName.Convert(this));
            }
            else if (UserId.IsNullOrEmpty() == false)
            {
                dic.Add("user_id", UserId.Convert(this));
            }
            else
            {
                if (ParentUserIdType == RawlerTwitter.ParentUserIdType.ScreenName)
                {
                    dic.Add("screen_name", GetText());
                }
                else if (ParentUserIdType == RawlerTwitter.ParentUserIdType.UserId)
                {
                    dic.Add("user_id", GetText());
                }
            }

            var result = login.Token.Followers.Ids(dic);

            foreach (var item in result.Result)
            {
                list.Add(item);
            }
            if (result.NextCursor > 0)
            {
                cursor = result.NextCursor;
            }
            else
            {
                cursor = -1;
            }


            return(list.Select(n => n.ToString()).ToList());
        }
Пример #21
0
        public override bool Check(string txt)
        {
            DateTime dt;

            if (StartDate == null && EndDate == null)
            {
                return(false);
            }

            if (DateTime.TryParse(txt, out dt))
            {
                if (StartDate == null && EndDate != null)
                {
                    if (dt < EndDate)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else if (StartDate != null && EndDate != null)
                {
                    if (dt >= StartDate && dt < EndDate)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    if (dt >= StartDate)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            else
            {
                if (ErrReport)
                {
                    ReportManage.ErrReport(this, "DateTime型のキャストに失敗:" + txt);
                }
                return(false);
            }

//            return base.Check(txt);
        }
Пример #22
0
        public override bool Check(string txt)
        {
            int dt;

            if (Start == null && End == null)
            {
                return(false);
            }

            if (int.TryParse(txt, out dt))
            {
                if (Start == null && End != null)
                {
                    if (dt < End)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else if (Start != null && End != null)
                {
                    if (dt >= Start && dt < End)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    if (dt >= Start)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            else
            {
                if (ErrReport)
                {
                    ReportManage.ErrReport(this, "int型のキャストに失敗:" + txt);
                }
                return(false);
            }

            //            return base.Check(txt);
        }
Пример #23
0
 public override void Run(bool runChildren)
 {
     if (System.DateTime.TryParse(GetText(), out dateTime))
     {
         base.Run(runChildren);
     }
     else
     {
         ReportManage.ErrReport(this, "DateTime.TryParseに失敗しました");
     }
 }
Пример #24
0
        public override void Run(bool runChildren)
        {
            if (DirectoryName == null)
            {
                ReportManage.ErrEmptyPropertyName(this, nameof(DirectoryName));
                return;
            }
            var list = System.IO.Directory.EnumerateFiles(DirectoryName.Convert(this), SearchPattern.Convert(this));

            base.RunChildrenForArray(true, list);
        }
Пример #25
0
        /// <summary>
        /// このクラスでの実行すること。
        /// </summary>
        /// <param name="runChildren"></param>
        public override void Run(bool runChildren)
        {
            //App認証の場合
            if (SetTwitterApiKeys.UseAppOnlyAutherentcation || AppOnlyAuthentication != null)
            {
                if (AppOnlyAuthentication == null)
                {
                    AppOnlyAuthentication = new AppOnlyAuthentication();
                }
                AppOnlyAuthentication.SetUp(this);
                token = OAuth2.GetToken(AppOnlyAuthentication.ConsumerKey, AppOnlyAuthentication.ConsumerSecret);
            }
            else
            {
                //普通の認証の場合
                if (GetOAuthTokens() == null)
                {
                    var session = OAuth.Authorize(ConsumerKey, ConsumerSecret);
                    ReportManage.Report(this, "PINがありません。ブラウザに表示されているPINの値を入力してください。PIN=\"(表示されているPIN)\" とTwitterLoginクラスに情報を追加してください");
                    System.Diagnostics.Process.Start(session.AuthorizeUri.ToString());

                    Task reportProgressTask = Task.Factory.StartNew(() =>
                    {
                        PinDialog pin = new PinDialog();
                        if (pin.ShowDialog() == true)
                        {
                            var tokens = session.GetTokens(pin.PIN);


                            TokenData td = new TokenData()
                            {
                                ConsumerKey       = ConsumerKey,
                                ConsumerSecret    = ConsumerSecret,
                                AccessToken       = tokens.AccessToken,
                                AccessTokenSecret = tokens.AccessTokenSecret
                            };
                            this.Token     = new Tokens(tokens);
                            this.TokenData = td;
                            System.Xaml.XamlServices.Save(tokenSettingFileName, td);
                        }
                        else
                        {
                            return;
                        }
                    },
                                                                    CancellationToken.None,
                                                                    TaskCreationOptions.None,
                                                                    RawlerLib.UIData.UISyncContext);
                    reportProgressTask.Wait();
                }
            }
            base.Run(runChildren);
        }
Пример #26
0
 public override bool Check(string txt)
 {
     if (CheckText != null && CheckText.Length > 0)
     {
         return(txt.Contains(CheckText));
     }
     else
     {
         ReportManage.ErrReport(this, "SwitchTextNodeオブジェクトでCheckTextの値がありません。");
         return(false);
     }
 }
Пример #27
0
        /// <summary>
        /// このクラスでの実行すること。
        /// </summary>
        /// <param name="runChildren"></param>
        public override void Run(bool runChildren)
        {
            if (SouceIterator != null)
            {
                SouceIterator.SetParent(this);
                SouceIterator.Run();

                string target = GetText();
                int    count  = 0;
                if (createOnceFlag == false || createOnce == false)
                {
                    //辞書の作成
                    dic = new Dictionary <string, List <string> >();
                    var wordList = SouceIterator.Texts.GetList().OrderByDescending(n => n.Length).ToArray();
                    foreach (var item in wordList)
                    {
                        List <string> tmpList = new List <string>();
                        if (dic.TryGetValue(item.Substring(0, keyWordLength), out tmpList) == false)
                        {
                            tmpList = new List <string>();
                            dic.Add(item.Substring(0, keyWordLength), tmpList);
                        }
                        tmpList.Add(item);
                    }
                }
                List <string> list = new List <string>();
                foreach (var item in NGram(GetText(), keyWordLength).Distinct())
                {
                    List <string> tmpList = new List <string>();
                    if (dic.TryGetValue(item, out tmpList))
                    {
                        foreach (var item2 in tmpList)
                        {
                            target = GetCount(target, item2, out count);
                            if (count >= MinCount)
                            {
                                for (int i = 0; i < count; i++)
                                {
                                    list.Add(item2);
                                }
                            }
                        }
                    }
                }

                RunChildrenForArray(runChildren, list);
            }
            else
            {
                ReportManage.ErrReport(this, "SouceIteratorがありません");
            }
        }
Пример #28
0
        public override void Run(bool runChildren)
        {
            currentDataRow = new DataRowObject();
            SetText(GetText());
            base.Run(runChildren);
            if (file == null)
            {
                file = this.GetUpperRawler <File>();
                if (file == null)
                {
                    ReportManage.ErrUpperNotFound <File>(this);
                    return;
                }
            }

            if (MustAttributes.IsNullOrEmpty() == false)
            {
                var must = MustAttributes.Split(',');
                if (currentDataRow.Attributes.Intersect(must).Count() == must.Count())
                {
                    if (SaveType == FileType.Ltsv)
                    {
                        file.WriteLine(currentDataRow.ToLtsv());
                    }
                    else
                    {
                        file.WriteLine(currentDataRow.DataDic.Select(n => n.Value.JoinText(",")).JoinText("\t"));
                    }
                }
            }
            else
            {
                if (SaveType == FileType.Ltsv)
                {
                    file.WriteLine(currentDataRow.ToLtsv());
                }
                else
                {
                    file.WriteLine(currentDataRow.DataDic.Select(n => n.Value.JoinText(",")).JoinText("\t"));
                }
            }
            if (currentDataRow.IsDataNull())
            {
                if (EmptyTree != null)
                {
                    EmptyTree.SetParent(this);
                    EmptyTree.Run();
                }
            }
        }
Пример #29
0
 public override void Run(bool runChildren)
 {
     if (hash == null)
     {
         hash = this.GetUpperRawler <HashSet>();
         if (hash == null)
         {
             ReportManage.ErrUpperNotFound <HashSet>(this);
             return;
         }
     }
     hash.AddHash(GetText());
     base.Run(runChildren);
 }
Пример #30
0
        public async override void Run(bool runChildren)
        {
            fileReadCompleted = false;
            string file = FileName.Convert(this);

            if (string.IsNullOrEmpty(file))
            {
                file = GetText();
            }
            if (System.IO.File.Exists(file) == false)
            {
                ReportManage.ErrReport(this, "Fileが見つかりません「" + file + "」");
                return;
            }
            cancellationTokenSource = new CancellationTokenSource();
            var task = Task.Factory.StartNew(() =>
            {
                List <string> list = new List <string>(BlockSize);

                foreach (var item in System.IO.File.ReadLines(FileName.Convert(this)))
                {
                    if (cancellationTokenSource.Token.IsCancellationRequested)
                    {
                        break;
                    }
                    bool flag = true;
                    do
                    {
                        if (q.Count < MaxBlock)
                        {
                            list.Add(item);
                            if (list.Count > BlockSize)
                            {
                                q.Push(list.ToArray());
                                list.Clear();
                            }
                            flag = false;
                            break;
                        }
                        else
                        {
                            Task.Delay(3).Wait();
                        }
                    }while (flag);
                }
                fileReadCompleted = true;
            }, cancellationTokenSource.Token);

            base.Run(runChildren);
        }