Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / CancellationScope.cs / 1305376 / CancellationScope.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Statements { using System; using System.Activities; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.Collections; using System.Windows.Markup; [ContentProperty("Body")] public sealed class CancellationScope : NativeActivity { Collectionvariables; Variable suppressCancel; public CancellationScope() : base() { this.suppressCancel = new Variable (); } public Collection Variables { get { if (this.variables == null) { this.variables = new ValidatingCollection { // disallow null values OnAddValidationCallback = item => { if (item == null) { throw FxTrace.Exception.ArgumentNull("item"); } } }; } return this.variables; } } [DefaultValue(null)] [DependsOn("Variables")] public Activity Body { get; set; } [DefaultValue(null)] [DependsOn("Body")] public Activity CancellationHandler { get; set; } protected override void CacheMetadata(NativeActivityMetadata metadata) { metadata.AddChild(this.Body); metadata.AddChild(this.CancellationHandler); metadata.SetVariablesCollection(this.Variables); metadata.AddImplementationVariable(this.suppressCancel); } protected override void Execute(NativeActivityContext context) { if (this.Body != null) { context.ScheduleActivity(this.Body, new CompletionCallback(OnBodyComplete)); } } void OnBodyComplete(NativeActivityContext context, ActivityInstance completedInstance) { // Determine whether to run the Cancel based on whether the body // canceled rather than whether cancel had been requested. if (completedInstance.State == ActivityInstanceState.Canceled || (context.IsCancellationRequested && completedInstance.State == ActivityInstanceState.Faulted)) { // We don't cancel the cancel handler this.suppressCancel.Set(context, true); context.MarkCanceled(); if (this.CancellationHandler != null) { context.ScheduleActivity(this.CancellationHandler, onFaulted : new FaultCallback(OnExceptionFromCancelHandler)); } } } protected override void Cancel(NativeActivityContext context) { bool suppressCancel = this.suppressCancel.Get(context); if (!suppressCancel) { context.CancelChildren(); } } void OnExceptionFromCancelHandler(NativeActivityFaultContext context, Exception propagatedException, ActivityInstance propagatedFrom) { this.suppressCancel.Set(context, false); } } } // 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
- XmlReader.cs
- WindowsStatusBar.cs
- BaseCodeDomTreeGenerator.cs
- Maps.cs
- SettingsSection.cs
- ListViewInsertionMark.cs
- ConditionalWeakTable.cs
- DbConnectionPoolGroup.cs
- ParameterModifier.cs
- RsaSecurityKey.cs
- ComNativeDescriptor.cs
- ComponentResourceKeyConverter.cs
- BaseCodePageEncoding.cs
- WebPartConnectionsConnectVerb.cs
- DataSourceView.cs
- TreeNodeCollectionEditor.cs
- OperatingSystem.cs
- SimpleBitVector32.cs
- SaveFileDialog.cs
- ActivityDesignerResources.cs
- TextServicesContext.cs
- HttpStreamFormatter.cs
- SessionState.cs
- StylusLogic.cs
- BaseTemplateCodeDomTreeGenerator.cs
- CachedFontFace.cs
- DrawingGroup.cs
- DataGridViewBindingCompleteEventArgs.cs
- CryptoKeySecurity.cs
- ListControlBoundActionList.cs
- WebRequest.cs
- WindowsFont.cs
- PermissionSetEnumerator.cs
- FormsAuthentication.cs
- InfoCardProofToken.cs
- XmlQueryTypeFactory.cs
- BatchServiceHost.cs
- SqlReferenceCollection.cs
- CroppedBitmap.cs
- EpmTargetTree.cs
- RotateTransform3D.cs
- ResourcePart.cs
- InputScopeNameConverter.cs
- DataGridViewTextBoxColumn.cs
- StylusPointCollection.cs
- _Events.cs
- EntityDataSourceContextDisposingEventArgs.cs
- AttributeCollection.cs
- SessionStateItemCollection.cs
- AutoResizedEvent.cs
- ListViewItem.cs
- HtmlInputHidden.cs
- DispatcherHookEventArgs.cs
- MsmqTransportSecurity.cs
- CancellationTokenSource.cs
- ManagementClass.cs
- prompt.cs
- RegistrySecurity.cs
- SBCSCodePageEncoding.cs
- FindRequestContext.cs
- CheckBoxFlatAdapter.cs
- LambdaCompiler.Statements.cs
- NetTcpBinding.cs
- BoundField.cs
- ModulesEntry.cs
- ZipIOLocalFileBlock.cs
- NetworkCredential.cs
- SystemIPv4InterfaceProperties.cs
- DayRenderEvent.cs
- WebExceptionStatus.cs
- BasicExpressionVisitor.cs
- XmlNodeReader.cs
- AvtEvent.cs
- BitSet.cs
- DriveNotFoundException.cs
- Object.cs
- FontSourceCollection.cs
- RoleManagerSection.cs
- WrappedIUnknown.cs
- Span.cs
- HttpsHostedTransportConfiguration.cs
- XmlDigitalSignatureProcessor.cs
- SoapAttributeAttribute.cs
- ConfigurationManagerInternalFactory.cs
- XMLSyntaxException.cs
- XsltArgumentList.cs
- ExecutionContext.cs
- ClientTargetCollection.cs
- OdbcCommandBuilder.cs
- WorkerRequest.cs
- MethodImplAttribute.cs
- NetworkInterface.cs
- StringInfo.cs
- UnsafeNetInfoNativeMethods.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- ProjectionPruner.cs
- WebDisplayNameAttribute.cs
- MatrixKeyFrameCollection.cs
- DrawingDrawingContext.cs
- WindowsStatusBar.cs