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();
}
}
}
}