public async Task Parse() { string source; if (isUrl) { source = await _loader.GetPage(); } else { source = Source; } Console.WriteLine("loader"); var domParser = new AngleSharp.Parser.Html.HtmlParser(); var document = await domParser.ParseAsync(source); Console.WriteLine("parser"); _result = await _parser.Parse(document); ParsingCompleted?.Invoke(this, new ParseResult <Dictionary <string, List <StringDictionary> > >() { Res = _result }); //OnNewData?.Invoke(this, result); }
//private static IAsyncResult EnqueueTask(Action action) //{ // var combinedActions = new DoubleAction(action, OnRunningTaskEnd); // var task = new Task(combinedActions.ActionDoSecondAlways); // lock (m_runningTasksSync) // { // if (m_runningTasks.Count == 0) // { // task.Start(); // } // m_runningTasks.Enqueue(task); // } // return task; //} //private static void OnRunningTaskEnd() //{ // lock (m_runningTasksSync) // { // m_runningTasks.Dequeue(); // Remove task that just ended. // if (m_runningTasks.Count > 0) // { // var next = m_runningTasks.Peek(); // next.Start(); // } // } //} /// <summary> /// Starts a task parsing all loaded script files. /// </summary> /// <param name="force">Set to true to force a parsing of all files.</param> /// <returns>True if parsing succeeded (no errors or parsing skipped).</returns> public static ITask StartFileParsing(bool force) { if (m_parsingInQueue != null) { return(m_parsingInQueue); } if (force || CheckIfFileParsingNeeded()) { m_parsingInQueue = m_hostActions.AddTask("Script File Parsing", true, null, (context) => { try { context.UpdateStatus($"Resetting files ({(force ? "forced" : "not forced")})"); foreach (var f in m_loadedFilesManager.ListFiles <ScriptFile>()) { f.ResetBeforeParsing(preserveUpdateableElements: force == false); } context.UpdateStatus("Parsing files"); m_lastParsingErrorCount = FileBuilder.ParseFiles(m_serviceManagerAdmin.Manager, context.Logger); } catch (Exception ex) { m_lastParsingErrorCount = 1; // At least one... context.Logger.LogError("File Parsing", ex.ToString()); } finally { context.UpdateStatus($"Finished parsing. {m_lastParsingErrorCount} parsing error(s)."); m_parsingInQueue = null; ParsingCompleted?.Invoke(null, EventArgs.Empty); } }); return(m_parsingInQueue); } else { return(null); } }
//###################################################################################################################### protected void OnParsingCompleted() { ParsingCompleted?.Invoke(this, this._abort); }