2. CS:\
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Threading;
using System.ComponentModel;
using System.Security.AccessControl;
namespace PC_HELP
{
///
/// Interaction logic for FixFolders.xaml
///
public partial class FixFolders : Window
{
BackgroundWorker m_oWorker;
public FixFolders()
{
InitializeComponent();
m_oWorker = new BackgroundWorker();
// Create a background worker thread that ReportsProgress &
// SupportsCancellation
// Hook up the appropriate events.
m_oWorker.DoWork += new DoWorkEventHandler(m_oWorker_DoWork);
m_oWorker.ProgressChanged += new ProgressChangedEventHandler
(m_oWorker_ProgressChanged);
m_oWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler
(m_oWorker_RunWorkerCompleted);
m_oWorker.WorkerReportsProgress = true;
m_oWorker.WorkerSupportsCancellation = true;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
m_oWorker.RunWorkerAsync();
}
void m_oWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{ }
void m_oWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// This function fires on the UI thread so it's safe to edit
// the UI control directly, no funny business with Control.Invoke :)
// Update the progressBar with the integer supplied to us from the
// ReportProgress() function.
PG1.Value = e.ProgressPercentage;
lblStatus.Text = "Processing......" + PG1.Value.ToString() + "%";
}
void m_oWorker_DoWork(object sender, DoWorkEventArgs e)
{
// The sender is the BackgroundWorker object we need it to
// report progress and check for cancellation.
//NOTE : Never play with the UI thread here...
string[] folders = System.IO.Directory.GetDirectories(@"", "*", System.IO.SearchOption.TopDirectoryOnly);
StringBuilder sb = new StringBuilder();
MessageBox.Show(folders[5].Substring(18));
for (int i = 0; i <= folders.Length - 1; i++)
{
BSCLib.AddDirectorySecurity(folders[i], folders[i].Substring(18), FileSystemRights.FullControl);
m_oWorker.ReportProgress(i*100/folders.Length);
if (m_oWorker.CancellationPending)
{
// Set the e.Cancel flag so that the WorkerCompleted event
// knows that the process was cancelled.
e.Cancel = true;
m_oWorker.ReportProgress(0);
return;
}
}
//Report 100% completion on operation completed
m_oWorker.ReportProgress(100);
}
}
}
Reference:
http://www.codeproject.com/Articles/99143/BackgroundWorker-Class-Sample-for-Beginners
No comments:
Post a Comment