private void Complete(object result, Exception error)
{
if (_completed) {
throw new InvalidOperationException();
}
_result = result;
_error = error;
_completed = true;
if (error == null) {
RaisePropertyChanged("Result", "IsCompleted", "CanCancel");
}
else {
RaisePropertyChanged("Error", "HasError", "IsCompleted", "CanCancel");
}
if (_completedHandler != null) {
_completedHandler(this, EventArgs.Empty);
}
if ((error != null) && (_errorHandled == false)) {
throw error;
}
}