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
- MergeLocalizationDirectives.cs
- ControlCollection.cs
- GrammarBuilderBase.cs
- CommandField.cs
- SoapElementAttribute.cs
- CommandSet.cs
- OperationBehaviorAttribute.cs
- NativeCppClassAttribute.cs
- WebServiceResponseDesigner.cs
- Lock.cs
- LineVisual.cs
- ScriptingSectionGroup.cs
- OleDbTransaction.cs
- RelationshipEndCollection.cs
- WebPartVerbsEventArgs.cs
- NamedPipeChannelListener.cs
- EmissiveMaterial.cs
- AutomationElementCollection.cs
- ExpressionVisitor.cs
- PropertyDescriptorGridEntry.cs
- FactorySettingsElement.cs
- NumericPagerField.cs
- ImageFormatConverter.cs
- TemplateKey.cs
- TextControl.cs
- ActivitiesCollection.cs
- XmlDictionaryWriter.cs
- ValidationSummary.cs
- SQLSingleStorage.cs
- DataGridItemCollection.cs
- HandoffBehavior.cs
- RootBrowserWindow.cs
- EraserBehavior.cs
- messageonlyhwndwrapper.cs
- UIElement3DAutomationPeer.cs
- ServiceChannelProxy.cs
- BinaryFormatter.cs
- PtsHost.cs
- TransformCryptoHandle.cs
- WindowsSecurityTokenAuthenticator.cs
- ProfileEventArgs.cs
- PrePostDescendentsWalker.cs
- DocumentAutomationPeer.cs
- AmbientValueAttribute.cs
- ReaderContextStackData.cs
- SymbolDocumentGenerator.cs
- ISFClipboardData.cs
- ParseElementCollection.cs
- LinqDataView.cs
- Effect.cs
- BookmarkEventArgs.cs
- CompatibleComparer.cs
- SystemIcons.cs
- Axis.cs
- DrawToolTipEventArgs.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- HMAC.cs
- PropertyValueUIItem.cs
- AnnotationHelper.cs
- SizeAnimationBase.cs
- TableRow.cs
- SiblingIterators.cs
- UnsafeNativeMethods.cs
- ColumnHeaderConverter.cs
- StorageComplexTypeMapping.cs
- SemanticAnalyzer.cs
- TransactionManager.cs
- Pick.cs
- PointConverter.cs
- Variable.cs
- DWriteFactory.cs
- DetailsViewRow.cs
- SqlDataSourceCustomCommandPanel.cs
- DataViewSetting.cs
- ScriptDescriptor.cs
- _NestedMultipleAsyncResult.cs
- GorillaCodec.cs
- SemaphoreSecurity.cs
- TextEditorCharacters.cs
- AssertUtility.cs
- XmlSchemaSubstitutionGroup.cs
- SubpageParaClient.cs
- ActionNotSupportedException.cs
- MessageQueue.cs
- SoapWriter.cs
- ViewDesigner.cs
- QueryInterceptorAttribute.cs
- InternalPermissions.cs
- DeclarativeConditionsCollection.cs
- UnsignedPublishLicense.cs
- RolePrincipal.cs
- FormsAuthenticationModule.cs
- HMAC.cs
- KeyMatchBuilder.cs
- XXXInfos.cs
- ObjectQueryExecutionPlan.cs
- LinkArea.cs
- EventHandlerList.cs
- ImageAnimator.cs
- DataServiceKeyAttribute.cs