Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / HandleScope.cs / 1305376 / HandleScope.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Statements { using System.Activities; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Runtime; using System.Windows.Markup; [ContentProperty("Body")] public sealed class HandleScope: NativeActivity where THandle : Handle { Variable declaredHandle; public HandleScope() { } public InArgument Handle { get; set; } public Activity Body { get; set; } protected override void CacheMetadata(NativeActivityMetadata metadata) { RuntimeArgument handleArgument = new RuntimeArgument("Handle", typeof(THandle), ArgumentDirection.In); metadata.Bind(this.Handle, handleArgument); metadata.SetArgumentsCollection(new Collection { handleArgument }); if (this.Body != null) { metadata.SetChildrenCollection(new Collection { this.Body }); } Collection implementationVariables = null; if ((this.Handle == null) || this.Handle.IsEmpty) { if (this.declaredHandle == null) { this.declaredHandle = new Variable (); } } else { this.declaredHandle = null; } if (this.declaredHandle != null) { ActivityUtilities.Add(ref implementationVariables, this.declaredHandle); } metadata.SetImplementationVariablesCollection(implementationVariables); } protected override void Execute(NativeActivityContext context) { // We should go through the motions even if there is no Body for debugging // purposes. When testing handles people will probably use empty scopes // expecting everything except the Body execution to occur. Handle scopedHandle = null; if ((this.Handle == null) || this.Handle.IsEmpty) { Fx.Assert(this.declaredHandle != null, "We should have declared the variable if we didn't have the argument set."); scopedHandle = this.declaredHandle.Get(context); } else { scopedHandle = this.Handle.Get(context); } if (scopedHandle == null) { throw FxTrace.Exception.ArgumentNull("Handle"); } context.Properties.Add(scopedHandle.ExecutionPropertyName, scopedHandle); if (this.Body != null) { context.ScheduleActivity(this.Body); } } } } // 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
- SettingsPropertyValue.cs
- SmtpMail.cs
- CodeCatchClauseCollection.cs
- Rotation3D.cs
- NamespaceExpr.cs
- PropertyChangingEventArgs.cs
- FindCriteriaElement.cs
- ArcSegment.cs
- XPathException.cs
- ButtonBaseAdapter.cs
- ItemChangedEventArgs.cs
- ParsedRoute.cs
- UdpChannelListener.cs
- AnimationStorage.cs
- PageCodeDomTreeGenerator.cs
- CategoryGridEntry.cs
- ResourceContainerWrapper.cs
- StateMachineWorkflow.cs
- SocketManager.cs
- ConstrainedGroup.cs
- TransportBindingElementImporter.cs
- SpotLight.cs
- SynchronizationLockException.cs
- CanExecuteRoutedEventArgs.cs
- HtmlTableCellCollection.cs
- FormViewRow.cs
- InvalidFilterCriteriaException.cs
- RenderDataDrawingContext.cs
- AddingNewEventArgs.cs
- SqlPersistenceProviderFactory.cs
- TextEditorSelection.cs
- DrawingCollection.cs
- MessageContractMemberAttribute.cs
- RadialGradientBrush.cs
- PresentationTraceSources.cs
- PrtCap_Builder.cs
- NavigationCommands.cs
- DefinitionUpdate.cs
- InvokeMemberBinder.cs
- RemoteWebConfigurationHostStream.cs
- UserControl.cs
- AxisAngleRotation3D.cs
- TableCellAutomationPeer.cs
- WebControl.cs
- CompilerInfo.cs
- ComponentDesigner.cs
- FileDialogCustomPlace.cs
- FieldReference.cs
- DbConvert.cs
- Debug.cs
- KnownBoxes.cs
- NavigationWindow.cs
- BoolExpression.cs
- SponsorHelper.cs
- EndEvent.cs
- objectresult_tresulttype.cs
- NoClickablePointException.cs
- CompositionDesigner.cs
- panel.cs
- WebRequestModuleElement.cs
- ListViewDeleteEventArgs.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- SafeNativeMethods.cs
- ServiceObjectContainer.cs
- ParserExtension.cs
- HtmlControl.cs
- FlatButtonAppearance.cs
- XmlSchemaAttributeGroup.cs
- BamlLocalizabilityResolver.cs
- BStrWrapper.cs
- BehaviorEditorPart.cs
- LockCookie.cs
- HtmlInputReset.cs
- ContractMethodInfo.cs
- SafeHandles.cs
- TextModifier.cs
- Message.cs
- DynamicEntity.cs
- PositiveTimeSpanValidator.cs
- SmiXetterAccessMap.cs
- MetabaseServerConfig.cs
- Win32.cs
- RichTextBox.cs
- ScriptResourceAttribute.cs
- IdentitySection.cs
- FormViewDeleteEventArgs.cs
- ItemList.cs
- MouseOverProperty.cs
- HotSpotCollection.cs
- AutomationPeer.cs
- BinaryObjectReader.cs
- CommonRemoteMemoryBlock.cs
- QueryServiceConfigHandle.cs
- Stylus.cs
- NativeCompoundFileAPIs.cs
- WhereQueryOperator.cs
- Container.cs
- X500Name.cs
- TypeSemantics.cs
- PipelineModuleStepContainer.cs