/// <summary> /// Handles the RunWorkerCompleted event of the LineOffsetArrayBuilder control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.ComponentModel.RunWorkerCompletedEventArgs"/> instance containing the event data.</param> private void LineOffsetDicoBuilder_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Cancelled) { return; } BuilderProgress.Value = (int)(m_Progress * 100.0); foreach (LogBlock Block in m_NewNodes) { TreeNode Node = new TreeNode(); Node.Name = Block.Name; Node.Text = Block.Text; Node.Tag = Block; if (LogTree.Nodes.Count > 0) { TreeNode LastNode = GetLastNode(LogTree.Nodes[LogTree.Nodes.Count - 1], Block.Parent); if (LastNode != null) { LastNode.Nodes.Add(Node); } else { LogTree.Nodes.Add(Node); } } else { LogTree.Nodes.Add(Node); } } ThePlotter.RefreshPlots(); LineOffsetDicoBuilder.RunWorkerAsync(); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtClearMarkers_Click(object sender, EventArgs e) { ThePlotter.ClearMarkers(); }
/// <summary> /// Handles the DoWork event of the LineOffsetArrayBuilder control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.ComponentModel.DoWorkEventArgs"/> instance containing the event data.</param> private void LineOffsetDicoBuilder_DoWork(object sender, DoWorkEventArgs e) { Thread.Sleep(10); m_NewNodes = new List <LogBlock>(); Int64 Line = 0; Int64 Offset = 0; // Get the last offset/line where we stopped if (m_LineOffsetDico.Keys.Count > 0) { List <Int64> KeyList = new List <Int64>(m_LineOffsetDico.Keys); Line = KeyList[KeyList.Count - 1]; Offset = m_LineOffsetDico[Line]; } FileStream TheStream = null; try { int LineCount = 0; // Open stream, read a line and close stream TheStream = new FileStream(m_FileName, FileMode.Open, FileAccess.Read, System.IO.FileShare.ReadWrite); while (true && LineCount < 1000) { if (LineOffsetDicoBuilder.CancellationPending) { e.Cancel = true; return; } Int64 SavedOffset = 0; TheStream.Position = Offset; SavedOffset = Offset; String LineString = GetLine(TheStream); Offset = TheStream.Position; if (LineString == String.Empty) { break; } if (m_LineOffsetDico.ContainsKey(Line) == false) { m_LineOffsetDico.Add(Line, SavedOffset); LogBlock Block = GetLineBlock(LineString); if (Block != null) { if (Block.Plot == String.Empty) { Block.Offset = SavedOffset; Block.Line = Line; m_NewNodes.Add(Block); m_OffsetBlockDico.Add(SavedOffset, Block); } else { ThePlotter.AddValue(Block.Name, new LogValue(Block.Time, Block.PlotValue)); } } Line++; } else { Line++; } LineCount++; } m_Progress = ((double)Offset / (double)TheStream.Length); TheStream.Close(); TheStream.Dispose(); } catch (Exception Ex) { Console.WriteLine(Ex.ToString()); } }