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
- HealthMonitoringSection.cs
- ButtonBase.cs
- RenderContext.cs
- CommonXSendMessage.cs
- storagemappingitemcollection.viewdictionary.cs
- BindingWorker.cs
- KeyEventArgs.cs
- CultureMapper.cs
- XmlRawWriter.cs
- DomNameTable.cs
- ReflectionPermission.cs
- FlowThrottle.cs
- SqlDataSourceView.cs
- MimeMapping.cs
- StylusButtonEventArgs.cs
- SelectedGridItemChangedEvent.cs
- SharedPersonalizationStateInfo.cs
- ConstantSlot.cs
- ClientConfigPaths.cs
- DictionaryEntry.cs
- Thread.cs
- QuaternionValueSerializer.cs
- TriggerBase.cs
- TextCharacters.cs
- LongTypeConverter.cs
- DurableEnlistmentState.cs
- Mutex.cs
- httpapplicationstate.cs
- PixelFormat.cs
- X509CertificateCollection.cs
- MailAddressCollection.cs
- Environment.cs
- ContextConfiguration.cs
- ExtensionFile.cs
- HtmlInputControl.cs
- HelpProvider.cs
- PolyQuadraticBezierSegment.cs
- Filter.cs
- ToolStripComboBox.cs
- EventMemberCodeDomSerializer.cs
- PowerStatus.cs
- ImageSource.cs
- ClientRuntimeConfig.cs
- FigureHelper.cs
- Catch.cs
- DocumentationServerProtocol.cs
- TextTreeUndo.cs
- ExpressionsCollectionConverter.cs
- ClientConfigPaths.cs
- TargetControlTypeCache.cs
- InputLanguageProfileNotifySink.cs
- EndpointAddressProcessor.cs
- Size3D.cs
- ObjectReaderCompiler.cs
- BaseCollection.cs
- MultipartIdentifier.cs
- LateBoundBitmapDecoder.cs
- CodeComment.cs
- ContentTextAutomationPeer.cs
- RelatedCurrencyManager.cs
- ErrorProvider.cs
- BitmapData.cs
- RoleManagerEventArgs.cs
- IFlowDocumentViewer.cs
- SerializerWriterEventHandlers.cs
- StyleXamlTreeBuilder.cs
- Int16Converter.cs
- BamlRecordReader.cs
- PersonalizationStateInfo.cs
- ValuePatternIdentifiers.cs
- ConfigurationPropertyAttribute.cs
- ClaimTypeElement.cs
- TemplateControlCodeDomTreeGenerator.cs
- __ConsoleStream.cs
- NavigationPropertySingletonExpression.cs
- DefaultCommandExtensionCallback.cs
- AnnotationHelper.cs
- LocationUpdates.cs
- SQLSingle.cs
- CompilerResults.cs
- EmptyQuery.cs
- securitymgrsite.cs
- WebPartTransformer.cs
- Pair.cs
- PageCodeDomTreeGenerator.cs
- DataPointer.cs
- BasicSecurityProfileVersion.cs
- ConnectorEditor.cs
- ActivationArguments.cs
- SearchForVirtualItemEventArgs.cs
- RegexCode.cs
- RectIndependentAnimationStorage.cs
- NonSerializedAttribute.cs
- ZipIOFileItemStream.cs
- XmlSerializer.cs
- ValidationErrorCollection.cs
- ListViewAutomationPeer.cs
- DbProviderServices.cs
- TCPListener.cs
- StylusPointPropertyUnit.cs