Advertisement
Guest User

BackgroundWorker Updating Progressbar Example With Log

a guest
Oct 27th, 2011
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.46 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO;
  10. namespace sampleBackgroundWorker
  11. {
  12.  
  13.     public partial class Form1 : Form
  14.     {
  15.  
  16.         private BackgroundWorker worker = new BackgroundWorker();
  17.         private DataTable data = new DataTable();
  18.         private delegate void DelegateMethod(object[] args);
  19.  
  20.         private StreamWriter writer;
  21.  
  22.         public Form1()
  23.         {
  24.             InitializeComponent();
  25.             worker.WorkerReportsProgress = true;
  26.             worker.DoWork += new DoWorkEventHandler(worker_DoWork);
  27.             worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
  28.             worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
  29.             saveFileDialog1.Filter = "Log Files|*.log|All Files|*.*";
  30.             if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  31.             {
  32.                 writer = new StreamWriter(File.Open(saveFileDialog1.FileName, FileMode.Append));
  33.             }
  34.         }
  35.  
  36.         private void button1_Click(object sender, EventArgs e)
  37.         {
  38.             openFileDialog1.Filter = "DAT Files|*.dat|All Files|*.*";
  39.             if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  40.             {
  41.                 worker.RunWorkerAsync(openFileDialog1.FileName);
  42.             }
  43.         }
  44.  
  45.         void worker_DoWork(object sender, DoWorkEventArgs e)
  46.         {
  47.             try
  48.             {
  49.                 BinaryReader reader = new BinaryReader(File.Open(e.Argument.ToString(), FileMode.Open));
  50.                 setupProgressBar(new object[] { (int)reader.BaseStream.Length });
  51.                 int columnCount = reader.ReadInt32();
  52.  
  53.                 data.Columns.Add("Date Time");
  54.                 for (int i = 0; i < columnCount; i++)
  55.                 {
  56.                     data.Columns.Add(new string(reader.ReadChars(reader.ReadInt32())));
  57.                     worker.ReportProgress((int)reader.BaseStream.Position);
  58.                 }
  59.  
  60.                 bool eof = false;
  61.                 while (!eof)
  62.                 {
  63.                     try
  64.                     {
  65.                         List<object> RowData = new List<object>();
  66.                         RowData.Add(reader.ReadInt32());
  67.                         for (int i = 0; i < columnCount; i++)
  68.                         {
  69.                             RowData.Add(reader.ReadSingle().ToString());
  70.                             worker.ReportProgress((int)reader.BaseStream.Position);
  71.                         }
  72.                         data.Rows.Add(RowData.ToArray());
  73.                         worker.ReportProgress((int)reader.BaseStream.Position);
  74.                     }
  75.                     catch (Exception ex)
  76.                     {
  77.                         eof = true;
  78.                     }
  79.                 }
  80.             }
  81.             catch (Exception ex)
  82.             {
  83.                 MessageBox.Show(ex.Message);
  84.             }
  85.         }
  86.  
  87.         void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
  88.         {
  89.             Log("Progress Entered");
  90.             progressBar1.Value = e.ProgressPercentage;
  91.             Log(String.Format("Progress Changed to {0}", e.ProgressPercentage.ToString()));
  92.         }
  93.  
  94.         void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  95.         {
  96.             Log("Complete Entered");
  97.             Application.DoEvents();
  98.             Log("Events Done");
  99.             MessageBox.Show("Complete!");
  100.             Log("Message Shown");
  101.         }
  102.  
  103.         private void setupProgressBar(object[] args)
  104.         {
  105.             try
  106.             {
  107.                 if (this.InvokeRequired)
  108.                 {
  109.                     DelegateMethod delegateMethod = new DelegateMethod(setupProgressBar);
  110.                     this.Invoke(delegateMethod, new object[] { args });
  111.                 }
  112.                 else
  113.                 {
  114.                     progressBar1.Maximum = (int)args[0];
  115.                 }
  116.             }
  117.             catch (Exception ex)
  118.             {
  119.                 MessageBox.Show(ex.Message);
  120.             }
  121.         }
  122.  
  123.         void Log(string message)
  124.         {  
  125.             writer.WriteLine(String.Format("{0}   -  {1}", DateTime.Now.ToString(), message));
  126.             writer.Flush();
  127.         }
  128.     }
  129. }
  130.  
  131.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement