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
- ActivityInstanceMap.cs
- CodeBlockBuilder.cs
- ButtonStandardAdapter.cs
- ParameterBuilder.cs
- _HelperAsyncResults.cs
- AsymmetricKeyExchangeFormatter.cs
- ScrollProviderWrapper.cs
- C14NUtil.cs
- Span.cs
- followingquery.cs
- CompositionTarget.cs
- Int32Storage.cs
- ProvideValueServiceProvider.cs
- TrustManagerPromptUI.cs
- KeyValueInternalCollection.cs
- Pen.cs
- ScrollChrome.cs
- SimpleTextLine.cs
- DiffuseMaterial.cs
- LicenseContext.cs
- DesignerAttribute.cs
- DetailsViewInsertEventArgs.cs
- FileUtil.cs
- TypeResolver.cs
- PeerPresenceInfo.cs
- ReachFixedDocumentSerializer.cs
- CachedFontFamily.cs
- ItemMap.cs
- webeventbuffer.cs
- PathFigure.cs
- SectionXmlInfo.cs
- VisualStyleRenderer.cs
- Stroke.cs
- odbcmetadatacolumnnames.cs
- ColumnProvider.cs
- GifBitmapEncoder.cs
- KnownTypes.cs
- SqlDataSourceView.cs
- UnwrappedTypesXmlSerializerManager.cs
- IODescriptionAttribute.cs
- DataBinding.cs
- DBCSCodePageEncoding.cs
- UTF8Encoding.cs
- BitStream.cs
- GetPolicyDetailsRequest.cs
- FileIOPermission.cs
- DefaultAsyncDataDispatcher.cs
- WebResourceAttribute.cs
- ClientSideProviderDescription.cs
- TrustLevel.cs
- ConstraintCollection.cs
- XmlSchemaSequence.cs
- Attributes.cs
- SqlClientPermission.cs
- ReturnType.cs
- DesignRelationCollection.cs
- StructuredTypeEmitter.cs
- NavigationWindow.cs
- PersistenceTypeAttribute.cs
- TypeBuilderInstantiation.cs
- UpdatableWrapper.cs
- Contracts.cs
- DataControlFieldHeaderCell.cs
- FileDialogCustomPlaces.cs
- QueryContinueDragEvent.cs
- ExpressionBuilder.cs
- UpdateCommandGenerator.cs
- DataGridViewCellEventArgs.cs
- PassportAuthenticationModule.cs
- odbcmetadatacolumnnames.cs
- Processor.cs
- WindowExtensionMethods.cs
- WebException.cs
- Button.cs
- SQLMoney.cs
- EnumValAlphaComparer.cs
- ScrollBarRenderer.cs
- WeakHashtable.cs
- XpsImageSerializationService.cs
- MatrixTransform3D.cs
- StreamedFramingRequestChannel.cs
- SoapTypeAttribute.cs
- PopupControlService.cs
- MouseWheelEventArgs.cs
- ExpressionBuilder.cs
- UserControlParser.cs
- GridViewCommandEventArgs.cs
- ModuleBuilder.cs
- XmlLanguage.cs
- StatusStrip.cs
- Transform3DGroup.cs
- DataGridViewTextBoxEditingControl.cs
- LocalizationParserHooks.cs
- Int32EqualityComparer.cs
- CookielessHelper.cs
- SafeRegistryHandle.cs
- GPRECTF.cs
- DocumentReference.cs
- HotCommands.cs