protected override void Parse() { analyser = new HalfLifeDemoAnalyser((HalfLifeDemo)demo, (IAnalysisWindow)this, progressWindowInterface); try { analyser.Parse(); } catch (ThreadAbortException) { throw; } catch (Exception ex) { GameLogWrite("*** Error ***", Brushes.Red); String errorMessage = "Error analysing demo."; if (demo.Status == Demo.StatusEnum.CorruptDirEntries) { errorMessage += " Since the demo is marked as having corrupt directory entries, this is to be expected. As a result, the analysis may be incomplete."; } progressWindowInterface.Error(errorMessage, ex, false, null); } ParsingFinished(analyser.Players, analyser.Rounds, analyser.Players); }