Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / DoWhile.cs / 1305376 / DoWhile.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Statements { using System.Activities; using System.Activities.Expressions; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq.Expressions; using System.Runtime; using System.Runtime.Collections; using System.Windows.Markup; [ContentProperty("Body")] public sealed class DoWhile : NativeActivity { CompletionCallback onBodyComplete; CompletionCallbackonConditionComplete; Collection variables; public DoWhile() : base() { } public DoWhile(Expression > condition) : this() { if (condition == null) { throw FxTrace.Exception.ArgumentNull("condition"); } this.Condition = new LambdaValue (condition); } public DoWhile(Activity condition) : this() { if (condition == null) { throw FxTrace.Exception.ArgumentNull("condition"); } this.Condition = condition; } 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 Condition { get; set; } [DefaultValue(null)] [DependsOn("Condition")] public Activity Body { get; set; } protected override void CacheMetadata(NativeActivityMetadata metadata) { metadata.SetVariablesCollection(this.Variables); if (this.Condition == null) { metadata.AddValidationError(SR.DoWhileRequiresCondition(this.DisplayName)); } else { metadata.AddChild(this.Condition); } metadata.AddChild(this.Body); } protected override void Execute(NativeActivityContext context) { // initial logic is the same as when the condition completes with true OnConditionComplete(context, null, true); } void ScheduleCondition(NativeActivityContext context) { Fx.Assert(this.Condition != null, "validated in OnOpen"); if (this.onConditionComplete == null) { this.onConditionComplete = new CompletionCallback (OnConditionComplete); } context.ScheduleActivity(this.Condition, this.onConditionComplete); } void OnConditionComplete(NativeActivityContext context, ActivityInstance completedInstance, bool result) { if (result) { if (this.Body != null) { if (this.onBodyComplete == null) { this.onBodyComplete = new CompletionCallback(OnBodyComplete); } context.ScheduleActivity(this.Body, this.onBodyComplete); } else { ScheduleCondition(context); } } } void OnBodyComplete(NativeActivityContext context, ActivityInstance completedInstance) { ScheduleCondition(context); } } } // 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
- DiffuseMaterial.cs
- XamlBuildTaskServices.cs
- SecurityAccessDeniedException.cs
- SelectionChangedEventArgs.cs
- CodeCompiler.cs
- DataListCommandEventArgs.cs
- UidManager.cs
- DesignerEventService.cs
- HtmlGenericControl.cs
- SplitterCancelEvent.cs
- ArrangedElement.cs
- UserPreferenceChangedEventArgs.cs
- Form.cs
- PolyQuadraticBezierSegment.cs
- SafeHandle.cs
- Schema.cs
- UDPClient.cs
- Misc.cs
- DynamicDiscoSearcher.cs
- PartitionResolver.cs
- TcpAppDomainProtocolHandler.cs
- RootCodeDomSerializer.cs
- SetIterators.cs
- LinearGradientBrush.cs
- FontWeightConverter.cs
- DataServiceHostFactory.cs
- XmlILModule.cs
- DataGridViewTextBoxEditingControl.cs
- EDesignUtil.cs
- EditingScopeUndoUnit.cs
- TableColumn.cs
- UInt64Converter.cs
- PropertyGrid.cs
- DesignTimeTemplateParser.cs
- TableCell.cs
- SchemaType.cs
- PersistChildrenAttribute.cs
- GAC.cs
- SortDescriptionCollection.cs
- ModelVisual3D.cs
- GridEntryCollection.cs
- CleanUpVirtualizedItemEventArgs.cs
- UpdateTranslator.cs
- XPathSelectionIterator.cs
- ExeConfigurationFileMap.cs
- Operators.cs
- UTF7Encoding.cs
- MimeAnyImporter.cs
- SecurityManager.cs
- SrgsRuleRef.cs
- RelationshipConverter.cs
- NumberSubstitution.cs
- PrintPreviewDialog.cs
- FloatMinMaxAggregationOperator.cs
- Delegate.cs
- MetadataUtilsSmi.cs
- ExpressionBuilderContext.cs
- ArrayExtension.cs
- CultureTableRecord.cs
- TrustSection.cs
- DynamicField.cs
- ArrangedElementCollection.cs
- LineServicesCallbacks.cs
- HttpDebugHandler.cs
- InputScope.cs
- CompilerError.cs
- RedirectionProxy.cs
- NaturalLanguageHyphenator.cs
- SplitterCancelEvent.cs
- ChannelSinkStacks.cs
- Zone.cs
- StrongNamePublicKeyBlob.cs
- _UriTypeConverter.cs
- NativeCppClassAttribute.cs
- Misc.cs
- EdgeProfileValidation.cs
- SlotInfo.cs
- NetStream.cs
- InvokeHandlers.cs
- BaseTemplateCodeDomTreeGenerator.cs
- HostExecutionContextManager.cs
- FixedSOMPageElement.cs
- XmlSecureResolver.cs
- BindingElement.cs
- QueryCreatedEventArgs.cs
- _BaseOverlappedAsyncResult.cs
- FollowerQueueCreator.cs
- SizeConverter.cs
- ObjectSecurityT.cs
- ApplicationCommands.cs
- UseLicense.cs
- FixedSOMSemanticBox.cs
- XamlToRtfWriter.cs
- AdornerLayer.cs
- CodeAttributeArgument.cs
- ColumnBinding.cs
- TextWriterTraceListener.cs
- FixedSOMContainer.cs
- StaticFileHandler.cs
- TabPage.cs