Changeset 1512


Ignore:
Timestamp:
1/13/2010 3:21:44 AM (2 years ago)
Author:
lowjoel
Message:

Defined the standard callback prototype. We have our own ProgressChangedEventArgs?, modelled after the System.ComponentModel?.ProgressChangedEventArgs?, and likewise, a similar handler interface.

Location:
branches/eraser6/SpeedMeter
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/eraser6/SpeedMeter/Eraser.Manager/DirectExecutor.cs

    r1508 r1512  
    383383                            throw new OperationCanceledException(S._("The task was cancelled.")); 
    384384 
    385                         task.OnProgressChanged(target, new TaskProgressEventArgs(task, 
    386                             path, 0, 0)); 
     385                        task.OnProgressChanged(target, 
     386                            new ProgressChangedEventArgs(tipSearch, 
     387                                new TaskProgressChangedEventArgs(path, 0, 0))); 
    387388                    }; 
    388389 
     
    396397                        tipProgress.Total = totalFiles; 
    397398                        tipProgress.Completed = currentFile; 
    398                         task.OnProgressChanged(target, new TaskProgressEventArgs(task, 
    399                             currentFilePath, 0, 0)); 
     399                        task.OnProgressChanged(target, 
     400                            new ProgressChangedEventArgs(tipProgress, 
     401                                new TaskProgressChangedEventArgs(currentFilePath, 0, 0))); 
    400402 
    401403                        if (currentTask.Canceled) 
     
    459461                            { 
    460462                                mainProgress.Completed += lastWritten; 
    461                                 task.OnProgressChanged(target, new TaskProgressEventArgs(task, 
    462                                     target.Drive, currentPass, method.Passes)); 
     463                                task.OnProgressChanged(target, 
     464                                    new ProgressChangedEventArgs(mainProgress, 
     465                                        new TaskProgressChangedEventArgs(target.Drive, currentPass, method.Passes))); 
    463466 
    464467                                if (currentTask.Canceled) 
     
    481484                        residentProgress.Completed = currentFile; 
    482485                        residentProgress.Total = totalFiles; 
    483                         task.OnProgressChanged(target, new TaskProgressEventArgs(task, 
    484                             string.Empty, 0, 0)); 
     486                        task.OnProgressChanged(target, 
     487                            new ProgressChangedEventArgs(residentProgress, 
     488                                new TaskProgressChangedEventArgs(string.Empty, 0, 0))); 
    485489 
    486490                        if (currentTask.Canceled) 
     
    497501                progress.Steps.Add(new SteppedProgressManager.Step(tempFiles, 
    498502                    0.0f, S._("Removing temporary files..."))); 
    499                 task.OnProgressChanged(target, new TaskProgressEventArgs(task, string.Empty, 0, 0)); 
     503                task.OnProgressChanged(target, new ProgressChangedEventArgs(tempFiles, 
     504                    new TaskProgressChangedEventArgs(string.Empty, 0, 0))); 
    500505                fsManager.DeleteFolder(info); 
    501506                tempFiles.Completed = tempFiles.Total = 1; 
     
    517522 
    518523                    //Set the event parameters, then broadcast the progress event. 
    519                     task.OnProgressChanged(target, new TaskProgressEventArgs(task, 
    520                         string.Empty, 0, 0)); 
     524                    task.OnProgressChanged(target, 
     525                        new ProgressChangedEventArgs(structureProgress, 
     526                            new TaskProgressChangedEventArgs(string.Empty, 0, 0))); 
    521527                } 
    522528            ); 
     
    557563                progress.Steps.Add(new SteppedProgressManager.Step(step, 
    558564                    1.0f / paths.Count, S._("Erasing files..."))); 
    559                 task.OnProgressChanged(target, new TaskProgressEventArgs( 
    560                     task, paths[i], 0, method.Passes)); 
     565                task.OnProgressChanged(target, 
     566                    new ProgressChangedEventArgs(step, 
     567                        new TaskProgressChangedEventArgs(paths[i], 0, method.Passes))); 
    561568                 
    562569                //Get the filesystem provider to handle the secure file erasures 
     
    601608                            step.Completed += lastWritten; 
    602609                            step.Total = totalData; 
    603                             task.OnProgressChanged(target, new TaskProgressEventArgs(task, 
    604                                 info.FullName, currentPass, method.Passes)); 
     610                            task.OnProgressChanged(target, 
     611                                new ProgressChangedEventArgs(step, 
     612                                    new TaskProgressChangedEventArgs(info.FullName, currentPass, method.Passes))); 
    605613                        }); 
    606614 
     
    659667                     foreach (DirectoryInfo subDir in info.GetDirectories()) 
    660668                         eraseEmptySubFolders(subDir); 
    661                      task.OnProgressChanged(target, new TaskProgressEventArgs( 
    662                          task, info.FullName, 0, 0)); 
     669                     task.OnProgressChanged(target, 
     670                         new ProgressChangedEventArgs(step, 
     671                             new TaskProgressChangedEventArgs(info.FullName, 0, 0))); 
    663672 
    664673                     FileSystemInfo[] files = info.GetFileSystemInfos(); 
     
    671680                { 
    672681                    DirectoryInfo info = new DirectoryInfo(fldr.Path); 
    673                     task.OnProgressChanged(target, new TaskProgressEventArgs( 
    674                          task, info.FullName, 0, 0)); 
     682                    task.OnProgressChanged(target, 
     683                        new ProgressChangedEventArgs(step, 
     684                            new TaskProgressChangedEventArgs(info.FullName, 0, 0))); 
    675685 
    676686                    //See if this is the root of a volume. 
     
    694704                progress.Steps.Add(new SteppedProgressManager.Step(step, 
    695705                    0.0f, S._("Emptying recycle bin..."))); 
    696                 task.OnProgressChanged(target, new TaskProgressEventArgs(task, string.Empty, 0, 0)); 
     706                task.OnProgressChanged(target, 
     707                    new ProgressChangedEventArgs(step, 
     708                        new TaskProgressChangedEventArgs(string.Empty, 0, 0))); 
    697709 
    698710                ShellApi.EmptyRecycleBin(EmptyRecycleBinOptions.NoConfirmation | 
  • branches/eraser6/SpeedMeter/Eraser.Manager/ProgressManager.cs

    r1510 r1512  
    702702        private object TaskLock; 
    703703    } 
     704 
     705    /// <summary> 
     706    /// Provides data for the Eraser.Manager.ProgressChanged event. 
     707    /// </summary> 
     708    public class ProgressChangedEventArgs : EventArgs 
     709    { 
     710        /// <summary> 
     711        /// Constructor. 
     712        /// </summary> 
     713        /// <param name="progress">The ProgressManagerBase object that stores the progress 
     714        /// for the given task.</param> 
     715        /// <param name="userState">A client-specified state object.</param> 
     716        public ProgressChangedEventArgs(ProgressManagerBase progress, object userState) 
     717        { 
     718            Progress = progress; 
     719            UserState = userState; 
     720        } 
     721 
     722        /// <summary> 
     723        /// The ProgressManagerBase object that stores the progress for the given 
     724        /// task. 
     725        /// </summary> 
     726        public ProgressManagerBase Progress { get; private set; } 
     727 
     728        /// <summary> 
     729        /// A client-specified state object. 
     730        /// </summary> 
     731        public object UserState { get; private set; } 
     732    } 
     733 
     734    /// <summary> 
     735    /// Represents the method that will handle the ProgressChanged event from 
     736    /// the <see cref="ProgressManagerBase"/> class. 
     737    /// </summary> 
     738    /// <param name="sender">The source of the event.</param> 
     739    /// <param name="e">A <see cref="ProgressChangedEventArgs"/> event that 
     740    /// stores the event data.</param> 
     741    public delegate void ProgressChangedEventHandler(object sender, ProgressChangedEventArgs e); 
    704742} 
  • branches/eraser6/SpeedMeter/Eraser.Manager/Task.cs

    r1503 r1512  
    235235        /// The event object holding all event handlers. 
    236236        /// </summary> 
    237         public EventHandler<TaskProgressEventArgs> ProgressChanged { get; set; } 
     237        public EventHandler<ProgressChangedEventArgs> ProgressChanged { get; set; } 
    238238 
    239239        /// <summary> 
     
    264264 
    265265        /// <summary> 
    266         /// Broadcasts a ProgressChanged event. 
     266        /// Broadcasts a ProgressChanged event. The sender will be the erasure target 
     267        /// which broadcast this event; e.UserState will contain extra information 
     268        /// about the progress which is stored as a TaskProgressChangedEventArgs 
     269        /// object. 
    267270        /// </summary> 
    268271        /// <param name="sender">The <see cref="ErasureTarget"/> which is reporting 
    269272        /// progress.</param> 
    270273        /// <param name="e">The new progress value.</param> 
    271         internal void OnProgressChanged(ErasureTarget sender, TaskProgressEventArgs e) 
    272         { 
     274        /// <exception cref="ArgumentException">e.UserState must be of the type 
     275        /// <see cref="TaskProgressEventargs"/></exception> 
     276        /// <exception cref="ArgumentNullException">Both sender and e cannot be null.</exception> 
     277        internal void OnProgressChanged(ErasureTarget sender, ProgressChangedEventArgs e) 
     278        { 
     279            if (sender == null) 
     280                throw new ArgumentNullException("sender"); 
     281            if (e == null) 
     282                throw new ArgumentNullException("sender"); 
     283            if (e.UserState.GetType() != typeof(TaskProgressChangedEventArgs)) 
     284                throw new ArgumentException("The Task.OnProgressChanged event expects a " + 
     285                    "TaskProgressEventArgs argument for the ProgressChangedEventArgs' UserState " + 
     286                    "object.", "e"); 
     287 
    273288            if (ProgressChanged != null) 
    274289                ProgressChanged(sender, e); 
     
    10111026    } 
    10121027 
    1013     public class TaskProgressEventArgs : TaskEventArgs 
     1028    /// <summary> 
     1029    /// Stores extra information in the <see cref="ProgressChangedEventArgs"/> 
     1030    /// structure that is not conveyed in the ProgressManagerBase classes. 
     1031    /// </summary> 
     1032    public class TaskProgressChangedEventArgs 
    10141033    { 
    10151034        /// <summary> 
    10161035        /// Constructor. 
    10171036        /// </summary> 
    1018         /// <param name="task">The task being referred to by this event.</param> 
    10191037        /// <param name="itemName">The item whose erasure progress is being erased.</param> 
    10201038        /// <param name="itemPass">The current pass number for this item.</param> 
    10211039        /// <param name="itemTotalPasses">The total number of passes to complete erasure 
    10221040        /// of this item.</param> 
    1023         public TaskProgressEventArgs(Task task, string itemName, int itemPass, 
     1041        public TaskProgressChangedEventArgs(string itemName, int itemPass, 
    10241042            int itemTotalPasses) 
    1025             : base(task) 
    10261043        { 
    10271044            ItemName = itemName; 
  • branches/eraser6/SpeedMeter/Eraser/ProgressForm.cs

    r1509 r1512  
    3131using Eraser.Util; 
    3232using System.Globalization; 
     33using ProgressChangedEventArgs = Eraser.Manager.ProgressChangedEventArgs; 
    3334 
    3435namespace Eraser 
     
    6364        } 
    6465 
    65         private void task_ProgressChanged(object sender, TaskProgressEventArgs e) 
     66        private void task_ProgressChanged(object sender, ProgressChangedEventArgs e) 
    6667        { 
    6768            if (InvokeRequired) 
     
    7273 
    7374                lastUpdate = DateTime.Now; 
    74                 Invoke(new EventHandler<TaskProgressEventArgs>(task_ProgressChanged), sender, e); 
     75                Invoke((EventHandler<ProgressChangedEventArgs>)task_ProgressChanged, sender, e); 
    7576                return; 
    7677            } 
     
    144145        } 
    145146 
    146         private void UpdateProgress(SteppedProgressManager targetProgress, TaskProgressEventArgs e) 
    147         { 
     147        private void UpdateProgress(SteppedProgressManager targetProgress, ProgressChangedEventArgs e) 
     148        { 
     149            TaskProgressChangedEventArgs e2 = (TaskProgressChangedEventArgs)e.UserState; 
     150 
    148151            status.Text = targetProgress.CurrentStep.Name; 
    149  
    150             if (e != null) 
    151             { 
    152                 item.Text = WrapItemName(e.ItemName); 
    153                 pass.Text = e.ItemTotalPasses != 0 ? 
    154                     S._("{0} out of {1}", e.ItemPass, e.ItemTotalPasses) : 
    155                     e.ItemPass.ToString(CultureInfo.CurrentCulture); 
     152            if (e2 != null) 
     153            { 
     154                item.Text = WrapItemName(e2.ItemName); 
     155                pass.Text = e2.ItemTotalPasses != 0 ? 
     156                    S._("{0} out of {1}", e2.ItemPass, e2.ItemTotalPasses) : 
     157                    e2.ItemPass.ToString(CultureInfo.CurrentCulture); 
    156158            } 
    157159 
  • branches/eraser6/SpeedMeter/Eraser/SchedulerPanel.cs

    r1502 r1512  
    2222using System; 
    2323using System.Collections.Generic; 
    24 using System.ComponentModel; 
    2524using System.Data; 
    2625using System.Drawing; 
     
    3534using System.IO; 
    3635using System.Runtime.Serialization; 
     36using System.ComponentModel; 
     37using ProgressChangedEventArgs = Eraser.Manager.ProgressChangedEventArgs; 
    3738 
    3839namespace Eraser 
     
    207208        /// Handles the progress event by the task. 
    208209        /// </summary> 
    209         void task_ProgressChanged(object sender, TaskEventArgs e) 
     210        void task_ProgressChanged(object sender, ProgressChangedEventArgs e) 
    210211        { 
    211212            //Make sure we handle the event in the main thread as this requires 
     
    213214            if (scheduler.InvokeRequired) 
    214215            { 
    215                 Invoke(new EventHandler<TaskEventArgs>(task_ProgressChanged), sender, e); 
     216                Invoke((EventHandler<ProgressChangedEventArgs>)task_ProgressChanged, sender, e); 
    216217                return; 
    217218            } 
    218219 
    219220            //Update the progress bar 
    220             schedulerProgress.Value = (int)(e.Task.Progress.Progress * 1000.0); 
     221            ErasureTarget target = (ErasureTarget)sender; 
     222            schedulerProgress.Value = (int)(target.Task.Progress.Progress * 1000.0); 
    221223        } 
    222224 
Note: See TracChangeset for help on using the changeset viewer.