Operation Task class

  Operation Task class 用于处理一个operation,处理完后通知外部。

namespace Demo {
	public abstract class OperationTaskBase {
		private Boolean _isTaskCompleted;
		
		public Boolean IsTaskCompleted {
			get {
				return this._isTaskCompleted;
			}
			set {
				this._isTaskCompleted = value;
				if (this._isTaskCompleted) {
					this.OnTaskCompleted();
				}
			}
		}	

		public event EventHandler TaskCompleted;
		protected virtual void OnTaskCompleted() {
			if (this.TaskCompleted != null) {
				this.TaskCompleted(this, EventArgs.Empty);
			}
		}	
		
		public abstract void Execute();
	}

	public class OperationTask<T> : OperationTaskBase {
		private Action<T> _action;
		private T _parameter;

		public OperationTask() {
		}

		public Action<T> Action {
			get {
				return this._action;
			}
			set {
				this._action = value;
			}
		}

		public T Parameter {
			get {
				return this._parameter;
			}
			set {
				this._parameter = value;
			}
		}

		public override void Execute() {
			if (this.Action != null) {
				this.Action.Invoke(this._parameter);
			}
		}
	}

	public class OperationTask : OperationTaskBase {
		private Action _action;

		public OperationTask() {
		}

		public Action Action {
			get {
				return this._action;
			}
			set {
				this._action = value;
			}
		}

		public override void Execute() {
			if (this.Action != null) {				
				this.Action.Invoke();
			}
		}
	}
}
                

  

posted on 2012-06-20 18:21  eleanor  阅读(187)  评论(0编辑  收藏  举报

导航