Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Threading;
- namespace CShrpColorNC
- {
- public partial class Form1 : Form
- {
- DateTime m_Form2Start;
- DateTime m_LastProgressCall = DateTime.Now;
- TimeSpan m_totalDif;
- int m_csNumLines = 0;
- string m_csText = "";
- BackgroundWorker backgroundWorker1 = new BackgroundWorker();
- public Form1()
- {
- InitializeComponent();
- InitializeBackgroundWorker();
- backgroundWorker1.WorkerReportsProgress = true;
- backgroundWorker1.WorkerSupportsCancellation = true;
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- }
- private void button1_Click(object sender, EventArgs e)
- {
- if (backgroundWorker1.IsBusy != true)
- {
- m_csText = this.m_bruteView.Text;
- backgroundWorker1.RunWorkerAsync();
- }
- resultLabel.Text = "Started...";
- }
- private void InitializeBackgroundWorker()
- {
- backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
- backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler( backgroundWorker1_RunWorkerCompleted);
- backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler( backgroundWorker1_ProgressChanged);
- }
- // This event handler is where the time-consuming work is done.
- private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
- {
- m_Form2Start= DateTime.Now;
- BackgroundWorker worker = sender as BackgroundWorker;
- ComplexSyntaxer.ComplexSyntaxer cs = new ComplexSyntaxer.ComplexSyntaxer();
- cs.Text = m_csText;
- m_csNumLines = cs.Lines.Length;
- int nStartPos = 0;
- int i = 0;
- int nOriginalPos = cs.SelectionStart;
- while (i < cs.Lines.Length)
- {
- cs.m_strLine = cs.Lines[i];
- cs.m_nLineStart = nStartPos;
- cs.m_nLineEnd = cs.m_nLineStart + cs.m_strLine.Length;
- cs.m_nLineLength = cs.m_nLineEnd - cs.m_nLineStart;
- cs.ProcessLine();
- worker.ReportProgress(i);//(int)(100 * (double)i / cs.Lines.Length));
- i++;
- nStartPos += cs.m_strLine.Length + 1;
- }
- cs.SelectionStart = nOriginalPos;
- m_csText = cs.Rtf;
- TimeSpan total = DateTime.Now.Subtract(m_Form2Start);
- Console.WriteLine("Total Time " + total.ToString());
- Console.WriteLine("Total Time2 " + m_totalDif.ToString());
- }
- // This event handler updates the progress.
- private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- TimeSpan difInCalls = DateTime.Now.Subtract(m_LastProgressCall);
- m_LastProgressCall = DateTime.Now;
- m_totalDif = m_totalDif.Add(difInCalls);
- TimeSpan avgDif = new TimeSpan(0, 0, 0, 0, ((int)m_totalDif.TotalMilliseconds / m_csNumLines));
- double totalTime = m_csNumLines * avgDif.TotalSeconds;
- double timeLeft = totalTime - (DateTime.Now.Subtract(m_Form2Start).TotalSeconds);
- Console.WriteLine("TotalEstTime: " + totalTime + " TimeLeft: " + timeLeft);
- // Update the progress label
- resultLabel.Text = "Line " + e.ProgressPercentage.ToString() + " of " + m_csNumLines + " at " + (int)(100 * (double)e.ProgressPercentage / m_csNumLines) + "% loaded";
- }
- // This event handler deals with the results of the background operation.
- private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- if (e.Cancelled == true)
- {
- resultLabel.Text = "Canceled!";
- }
- else if (e.Error != null)
- {
- resultLabel.Text = "Error: " + e.Error.Message;
- }
- else
- {
- resultLabel.Text = "Done!";
- Form2 form2 = new Form2(m_csText);
- form2.ShowDialog();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement