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
- RegionInfo.cs
- BindingValueChangedEventArgs.cs
- TokenizerHelper.cs
- SqlTriggerAttribute.cs
- CollectionViewGroupRoot.cs
- CanonicalFormWriter.cs
- WindowsTitleBar.cs
- ControlCachePolicy.cs
- ClockGroup.cs
- RemotingAttributes.cs
- DataServiceStreamResponse.cs
- SplitterCancelEvent.cs
- AnimationException.cs
- EntitySetRetriever.cs
- VisualProxy.cs
- UpdateInfo.cs
- InvalidWMPVersionException.cs
- BuildProvider.cs
- MediaContextNotificationWindow.cs
- SystemResources.cs
- cookiecollection.cs
- ContentOperations.cs
- DataGridViewComponentPropertyGridSite.cs
- _Win32.cs
- ResourceContainer.cs
- BinaryReader.cs
- DataMemberAttribute.cs
- XmlReaderDelegator.cs
- BamlMapTable.cs
- WorkflowMarkupElementEventArgs.cs
- Lease.cs
- ConfigurationManagerHelper.cs
- ViewRendering.cs
- EventLogPermissionAttribute.cs
- ValidatorCompatibilityHelper.cs
- FrameAutomationPeer.cs
- SafeProcessHandle.cs
- SslStream.cs
- XPathItem.cs
- ListViewItemEventArgs.cs
- FormViewInsertEventArgs.cs
- Walker.cs
- TextBox.cs
- InfoCardRSACryptoProvider.cs
- PageThemeParser.cs
- FileUpload.cs
- WebControlAdapter.cs
- HtmlControlPersistable.cs
- SiteIdentityPermission.cs
- ContextCorrelationInitializer.cs
- WebPartConnection.cs
- ExceptQueryOperator.cs
- Dispatcher.cs
- ListenerElementsCollection.cs
- ClassDataContract.cs
- WindowInteropHelper.cs
- MappingException.cs
- BitHelper.cs
- TreeNodeMouseHoverEvent.cs
- TraceData.cs
- AutoGeneratedField.cs
- WindowsListBox.cs
- CompilationRelaxations.cs
- SerialPort.cs
- SerializationObjectManager.cs
- SoapSchemaImporter.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- FrameworkTextComposition.cs
- RefType.cs
- IImplicitResourceProvider.cs
- Helpers.cs
- SapiInterop.cs
- RegexWriter.cs
- _LocalDataStore.cs
- ExtensionDataObject.cs
- HebrewNumber.cs
- DataGridViewTopRowAccessibleObject.cs
- InvalidComObjectException.cs
- Clipboard.cs
- InputBuffer.cs
- X509CertificateValidator.cs
- ArgumentOutOfRangeException.cs
- ZipArchive.cs
- MetricEntry.cs
- ConfigurationManagerHelper.cs
- SqlTypesSchemaImporter.cs
- RequestedSignatureDialog.cs
- sqlstateclientmanager.cs
- Encoder.cs
- GridViewCancelEditEventArgs.cs
- LayoutInformation.cs
- MetaModel.cs
- _LocalDataStoreMgr.cs
- ColumnBinding.cs
- RouteValueDictionary.cs
- EntityProviderFactory.cs
- PartitionResolver.cs
- ThreadAttributes.cs
- ProtocolsConfiguration.cs
- TextTreeInsertUndoUnit.cs