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
- WebPartTracker.cs
- ListItemsCollectionEditor.cs
- PrintDialog.cs
- ManifestBasedResourceGroveler.cs
- PinnedBufferMemoryStream.cs
- XPathArrayIterator.cs
- TableColumnCollectionInternal.cs
- ContentIterators.cs
- dataSvcMapFileLoader.cs
- ProviderCollection.cs
- ProviderManager.cs
- AppModelKnownContentFactory.cs
- DataGridViewImageColumn.cs
- SafeSecurityHelper.cs
- InkCanvasFeedbackAdorner.cs
- MobileControlsSectionHandler.cs
- GroupItemAutomationPeer.cs
- DecoderBestFitFallback.cs
- FirstMatchCodeGroup.cs
- DataControlButton.cs
- CodeFieldReferenceExpression.cs
- CookielessHelper.cs
- Expander.cs
- Helpers.cs
- XmlSchemaImport.cs
- ShortcutKeysEditor.cs
- ProfileModule.cs
- PluralizationServiceUtil.cs
- JavaScriptSerializer.cs
- XmlSignatureProperties.cs
- HandlerFactoryWrapper.cs
- PageSettings.cs
- DataSourceView.cs
- DataBoundControlActionList.cs
- DiscoveryProxy.cs
- Scene3D.cs
- ObjectDataSource.cs
- BufferAllocator.cs
- ReverseInheritProperty.cs
- XmlReflectionImporter.cs
- Point3DAnimationBase.cs
- CompositeControl.cs
- Triangle.cs
- ItemChangedEventArgs.cs
- DocumentOrderQuery.cs
- ProxyWebPart.cs
- SqlServer2KCompatibilityCheck.cs
- BitmapCodecInfo.cs
- RadioButtonFlatAdapter.cs
- HealthMonitoringSectionHelper.cs
- Scene3D.cs
- SecurityUniqueId.cs
- VisualStyleElement.cs
- InlineUIContainer.cs
- XmlSerializer.cs
- WebException.cs
- CounterCreationData.cs
- WebPartCancelEventArgs.cs
- XhtmlBasicPageAdapter.cs
- OutputCacheProfileCollection.cs
- LinkGrep.cs
- SqlXmlStorage.cs
- UndoEngine.cs
- ImplicitInputBrush.cs
- AutomationTextAttribute.cs
- DurableTimerExtension.cs
- FixedHyperLink.cs
- Shape.cs
- CodeSubDirectoriesCollection.cs
- DefaultClaimSet.cs
- CompiledQueryCacheKey.cs
- NonVisualControlAttribute.cs
- SingleResultAttribute.cs
- AttributeCollection.cs
- _PooledStream.cs
- HtmlDocument.cs
- StringValueSerializer.cs
- QuaternionRotation3D.cs
- Function.cs
- StoreItemCollection.Loader.cs
- DbProviderManifest.cs
- EFColumnProvider.cs
- SafeWaitHandle.cs
- DetailsViewInsertEventArgs.cs
- DataGridViewColumnConverter.cs
- Pair.cs
- SystemEvents.cs
- ClonableStack.cs
- OperandQuery.cs
- ListControlBoundActionList.cs
- WebBrowserEvent.cs
- uribuilder.cs
- DataControlImageButton.cs
- PropertyEntry.cs
- JumpTask.cs
- AccessDataSourceView.cs
- OdbcConnectionFactory.cs
- QilCloneVisitor.cs
- CommandConverter.cs
- __Filters.cs