/// <summary> /// Tasks the action. /// </summary> /// <param name="parameter">The parameter.</param> protected void TaskAction(object parameter) { if (this.cancellationTokenSource.IsCancellationRequested) { lock (this.statusSync) { this.status = PipeTaskStatus.Cancelled; this.OnStatusChanged(); } return; } lock (this.statusSync) { this.status = PipeTaskStatus.Running; this.OnStatusChanged(); } this.action(parameter); lock (this.statusSync) { this.status = PipeTaskStatus.Finished; this.OnStatusChanged(); } }
// constructors /// <summary> /// Initializes a new instance of the <see cref="PipeTaskStatusChangedEventArgs"/> class. /// </summary> /// <param name="status">The status.</param> /// <param name="parameter">The parameter.</param> public PipeTaskStatusChangedEventArgs(PipeTaskStatus status, object parameter) : base() { this.status = status; this.parameter = parameter; }
/// <summary> /// Initializes a new instance of the <see cref="PipeTask"/> class. /// </summary> protected PipeTask() { this.cancellationTokenSource = new CancellationTokenSource(); this.statusSync = new object(); this.status = PipeTaskStatus.NotStarted; }
/// <summary> /// Called when [task status changed]. /// </summary> /// <param name="status">The status.</param> /// <param name="parameter">The parameter.</param> protected void OnTaskStatusChanged(PipeTaskStatus status, object parameter) { if (this.TaskStatusChanged != null) { this.TaskStatusChanged(this, new PipeTaskStatusChangedEventArgs(status, parameter)); } }