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
- SqlRetyper.cs
- HostingEnvironmentSection.cs
- CallContext.cs
- columnmapkeybuilder.cs
- PageCatalogPart.cs
- DataColumn.cs
- ButtonBase.cs
- ChangeBlockUndoRecord.cs
- EntityDataSourceStatementEditorForm.cs
- SmiContext.cs
- OdbcEnvironmentHandle.cs
- SecUtil.cs
- BindingManagerDataErrorEventArgs.cs
- KnownBoxes.cs
- XPathMultyIterator.cs
- SafeCoTaskMem.cs
- PriorityRange.cs
- FreezableDefaultValueFactory.cs
- MasterPageBuildProvider.cs
- TabControl.cs
- ShutDownListener.cs
- SelectedGridItemChangedEvent.cs
- CodeNamespaceImport.cs
- Button.cs
- RegexParser.cs
- TiffBitmapDecoder.cs
- UpdateExpressionVisitor.cs
- HotSpot.cs
- EmbeddedMailObject.cs
- XmlSchemaObjectCollection.cs
- ResolveNameEventArgs.cs
- ResourceManagerWrapper.cs
- StandardCommands.cs
- ErrorInfoXmlDocument.cs
- SaveFileDialog.cs
- SecurityCredentialsManager.cs
- ExtendedProperty.cs
- AssemblyLoader.cs
- ServerValidateEventArgs.cs
- BitStream.cs
- CompositeCollection.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- COM2PropertyBuilderUITypeEditor.cs
- WebPartConnectionsCancelVerb.cs
- InstanceOwner.cs
- ZipIOLocalFileHeader.cs
- GradientSpreadMethodValidation.cs
- DynamicDataExtensions.cs
- XmlDataDocument.cs
- Single.cs
- COM2PropertyDescriptor.cs
- XmlSubtreeReader.cs
- DebugView.cs
- DispatcherProcessingDisabled.cs
- ServicePoint.cs
- UnknownWrapper.cs
- ClientConfigurationHost.cs
- SecurityException.cs
- LiteralControl.cs
- AnnotationObservableCollection.cs
- WeakReferenceEnumerator.cs
- DataSourceView.cs
- ContactManager.cs
- WinFormsComponentEditor.cs
- InternalMappingException.cs
- XPathQilFactory.cs
- UnsafeNativeMethods.cs
- SafeThreadHandle.cs
- EntitySetDataBindingList.cs
- configsystem.cs
- SelectionHighlightInfo.cs
- FusionWrap.cs
- NumericPagerField.cs
- GlyphInfoList.cs
- SemaphoreFullException.cs
- TraceXPathNavigator.cs
- WebPartEventArgs.cs
- ConfigXmlElement.cs
- AssemblyCollection.cs
- KeyValueConfigurationCollection.cs
- PropertyGroupDescription.cs
- CompiledXpathExpr.cs
- IResourceProvider.cs
- HwndHost.cs
- MediaEntryAttribute.cs
- StoreItemCollection.Loader.cs
- PrimitiveSchema.cs
- TreeNodeConverter.cs
- DrawingDrawingContext.cs
- BinHexDecoder.cs
- ConfigXmlElement.cs
- ApplicationHost.cs
- InvokeProviderWrapper.cs
- WindowsEditBox.cs
- TPLETWProvider.cs
- XmlSiteMapProvider.cs
- RuntimeConfigLKG.cs
- ProviderConnectionPoint.cs
- TextEditor.cs
- IImplicitResourceProvider.cs