Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / While.cs / 1305376 / While.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Statements { using System.Activities.Expressions; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Linq.Expressions; using System.Runtime; using System.Runtime.Collections; using System.Windows.Markup; [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldNotMatchKeywords, Justification = "Optimizing for XAML naming. VB imperative users will [] qualify (e.g. New [While])")] [ContentProperty("Body")] public sealed class While : NativeActivity { CompletionCallback onBodyComplete; CompletionCallbackonConditionComplete; Collection variables; public While() : base() { } public While(Expression > condition) : this() { if (condition == null) { throw FxTrace.Exception.ArgumentNull("condition"); } this.Condition = new LambdaValue (condition); } public While(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); metadata.AddChild(this.Body); if (this.Condition == null) { metadata.AddValidationError(SR.WhileRequiresCondition(this.DisplayName)); } else { metadata.AddChild(this.Condition); } } protected override void Execute(NativeActivityContext context) { ScheduleCondition(context); } 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
- TypeToken.cs
- TypeUtil.cs
- RemotingConfigParser.cs
- DisplayMemberTemplateSelector.cs
- HttpSessionStateBase.cs
- DetailsViewRowCollection.cs
- EventLogRecord.cs
- DBConnection.cs
- querybuilder.cs
- DataTableCollection.cs
- TabletCollection.cs
- ParserStreamGeometryContext.cs
- HwndHostAutomationPeer.cs
- DataStreamFromComStream.cs
- SqlDuplicator.cs
- DoubleLink.cs
- StringKeyFrameCollection.cs
- ExpressionParser.cs
- Automation.cs
- AddInControllerImpl.cs
- Random.cs
- OperationCanceledException.cs
- DataControlFieldCollection.cs
- PointConverter.cs
- ValidationRuleCollection.cs
- TagNameToTypeMapper.cs
- CatalogPart.cs
- TargetException.cs
- ListContractAdapter.cs
- ExtensionFile.cs
- EnumerableCollectionView.cs
- ListGeneralPage.cs
- CoreSwitches.cs
- NamedPipeTransportBindingElement.cs
- CommandField.cs
- UpdateCompiler.cs
- MaskedTextBoxDesigner.cs
- DebugInfoExpression.cs
- CaseExpr.cs
- EventLogPermissionEntry.cs
- DragAssistanceManager.cs
- BooleanAnimationUsingKeyFrames.cs
- Page.cs
- ClientSettings.cs
- SecureStringHasher.cs
- RequestQueryProcessor.cs
- DesignerDataStoredProcedure.cs
- OperationPickerDialog.designer.cs
- RequestTimeoutManager.cs
- SelectedCellsCollection.cs
- DataServiceExpressionVisitor.cs
- TaiwanLunisolarCalendar.cs
- DataSpaceManager.cs
- tooltip.cs
- AccessDataSourceView.cs
- XmlReader.cs
- SchemaInfo.cs
- JsonReaderWriterFactory.cs
- SqlMethodCallConverter.cs
- TabControlCancelEvent.cs
- WebColorConverter.cs
- ParameterDataSourceExpression.cs
- RadioButtonList.cs
- shaperfactoryquerycacheentry.cs
- UnsafeNativeMethodsTablet.cs
- _DomainName.cs
- Buffer.cs
- QuaternionAnimationBase.cs
- CapabilitiesState.cs
- FontEditor.cs
- TrackingProfileSerializer.cs
- PasswordRecovery.cs
- NamespaceCollection.cs
- AttributeQuery.cs
- ISAPIRuntime.cs
- ConfigurationErrorsException.cs
- ClientOptions.cs
- CodeDefaultValueExpression.cs
- ContainerParaClient.cs
- PenContexts.cs
- MimeWriter.cs
- WebControlAdapter.cs
- AbstractDataSvcMapFileLoader.cs
- UpdateTranslator.cs
- DtrList.cs
- DataGridViewAccessibleObject.cs
- AvTraceDetails.cs
- HandleCollector.cs
- FrameworkContentElement.cs
- PeerHelpers.cs
- PrintingPermissionAttribute.cs
- ViewStateException.cs
- VisualStyleRenderer.cs
- ReaderOutput.cs
- DataGridRelationshipRow.cs
- EdmProperty.cs
- xamlnodes.cs
- FontStretchConverter.cs
- SqlParameterizer.cs
- SafeBuffer.cs