Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / TerminateWorkflow.cs / 1305376 / TerminateWorkflow.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.Activities.Statements
{
using System;
using System.Activities;
using System.ComponentModel;
using System.Collections.ObjectModel;
public sealed class TerminateWorkflow : NativeActivity
{
public TerminateWorkflow() { }
[DefaultValue(null)]
public InArgument Reason { get; set; }
[DefaultValue(null)]
public InArgument Exception { get; set; }
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
Collection arguments = new Collection();
RuntimeArgument reasonArgument = new RuntimeArgument("Reason", typeof(string), ArgumentDirection.In, false);
metadata.Bind(this.Reason, reasonArgument);
RuntimeArgument exceptionArgument = new RuntimeArgument("Exception", typeof(Exception), ArgumentDirection.In, false);
metadata.Bind(this.Exception, exceptionArgument);
arguments.Add(reasonArgument);
arguments.Add(exceptionArgument);
metadata.SetArgumentsCollection(arguments);
if((this.Reason == null || this.Reason.IsEmpty) &&
(this.Exception == null || this.Exception.IsEmpty))
{
metadata.AddValidationError(SR.OneOfTwoPropertiesMustBeSet("Reason", "Exception", "TerminateWorkflow", this.DisplayName));
}
}
protected override void Execute(NativeActivityContext context)
{
// If Reason is provided, we'll create a WorkflowApplicationTerminatedException from
// it, wrapping Exception if it is also provided. Otherwise just use Exception.
// If neither is provided just throw a new WorkflowTerminatedException.
string reason = Reason.Get(context);
Exception exception = Exception.Get(context);
if (!string.IsNullOrEmpty(reason))
{
context.Terminate(new WorkflowTerminatedException(reason, exception));
}
else if(exception != null)
{
context.Terminate(exception);
}
else
{
context.Terminate(new WorkflowTerminatedException());
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Visual3D.cs
- Scripts.cs
- OleDbRowUpdatingEvent.cs
- EncryptedType.cs
- TableCellCollection.cs
- ProfileModule.cs
- SQLByteStorage.cs
- TextEffect.cs
- XmlILStorageConverter.cs
- SymbolEqualComparer.cs
- TimersDescriptionAttribute.cs
- Property.cs
- RecordBuilder.cs
- RtfToXamlLexer.cs
- XmlSchemaInfo.cs
- Events.cs
- Peer.cs
- DataReceivedEventArgs.cs
- TreeNodeMouseHoverEvent.cs
- XsltFunctions.cs
- ManagedFilter.cs
- TypeInitializationException.cs
- ProcessModelInfo.cs
- OutputCacheModule.cs
- ReadOnlyDataSourceView.cs
- PointLight.cs
- AnnotationComponentChooser.cs
- OleDbTransaction.cs
- PropertyStore.cs
- PinnedBufferMemoryStream.cs
- ParameterRetriever.cs
- QueueProcessor.cs
- RegexCapture.cs
- ProviderSettingsCollection.cs
- _FtpDataStream.cs
- TextBoxView.cs
- StringHelper.cs
- EventLogEntryCollection.cs
- XmlSchemaGroup.cs
- NativeActivityMetadata.cs
- DetailsViewInsertEventArgs.cs
- sitestring.cs
- SmiMetaData.cs
- AnnouncementEndpointElement.cs
- StaticDataManager.cs
- NativeCppClassAttribute.cs
- CorrelationValidator.cs
- MemoryFailPoint.cs
- DropSource.cs
- FSWPathEditor.cs
- UxThemeWrapper.cs
- ControlCachePolicy.cs
- DefaultValueAttribute.cs
- PeerNameRecordCollection.cs
- DiffuseMaterial.cs
- Visual3DCollection.cs
- TraceContext.cs
- DataIdProcessor.cs
- OleCmdHelper.cs
- VersionedStream.cs
- regiisutil.cs
- EncodingNLS.cs
- XmlSerializationWriter.cs
- StrongNameIdentityPermission.cs
- mansign.cs
- HttpAsyncResult.cs
- TableItemProviderWrapper.cs
- ProxyHwnd.cs
- SQLGuid.cs
- VirtualDirectoryMappingCollection.cs
- CodeParameterDeclarationExpression.cs
- LineMetrics.cs
- SymbolTable.cs
- DialogResultConverter.cs
- Variable.cs
- PeerCollaborationPermission.cs
- SafeFileMappingHandle.cs
- StrokeNodeData.cs
- HeaderedItemsControl.cs
- ExtendedProperty.cs
- XmlSchemaImporter.cs
- _SSPISessionCache.cs
- UnsafeNativeMethods.cs
- SchemaEntity.cs
- ConfigXmlText.cs
- ClientConfigurationSystem.cs
- DetailsViewPageEventArgs.cs
- VisualBrush.cs
- SafeArchiveContext.cs
- StyleModeStack.cs
- CompositeDataBoundControl.cs
- MenuAdapter.cs
- OrderedDictionary.cs
- XmlSchema.cs
- StructuredProperty.cs
- DefaultBinder.cs
- InstanceCreationEditor.cs
- SqlParameterizer.cs
- WindowsTooltip.cs
- DesignerVerbCollection.cs