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
- XamlTreeBuilder.cs
- TypeConverterHelper.cs
- Stacktrace.cs
- BaseCAMarshaler.cs
- ReferentialConstraint.cs
- AuthenticateEventArgs.cs
- CompilationUtil.cs
- IconBitmapDecoder.cs
- GeneralTransform.cs
- FormClosedEvent.cs
- Events.cs
- RevocationPoint.cs
- DataTableCollection.cs
- EventPrivateKey.cs
- CultureInfo.cs
- MaskPropertyEditor.cs
- ListViewUpdatedEventArgs.cs
- TCPListener.cs
- CallbackHandler.cs
- BindToObject.cs
- OperandQuery.cs
- Rect3D.cs
- Int32AnimationBase.cs
- AlignmentXValidation.cs
- AppearanceEditorPart.cs
- TextRunProperties.cs
- ScriptingScriptResourceHandlerSection.cs
- SimpleRecyclingCache.cs
- Flattener.cs
- CharacterShapingProperties.cs
- LocalBuilder.cs
- SafeEventLogWriteHandle.cs
- InternalTransaction.cs
- SystemBrushes.cs
- TypeHelper.cs
- LinkButton.cs
- Line.cs
- SQLString.cs
- TextDecorationUnitValidation.cs
- XPathSingletonIterator.cs
- DataAdapter.cs
- ContextConfiguration.cs
- StylusOverProperty.cs
- ObjectDisposedException.cs
- SizeAnimation.cs
- Config.cs
- HttpPostedFile.cs
- FormatterConverter.cs
- WmiPutTraceRecord.cs
- CreatingCookieEventArgs.cs
- BStrWrapper.cs
- DesignerSerializerAttribute.cs
- UIElement3D.cs
- TrackBarRenderer.cs
- AssemblyUtil.cs
- CodeExporter.cs
- ServiceSettingsResponseInfo.cs
- DataBindingHandlerAttribute.cs
- MethodToken.cs
- AnnotationComponentManager.cs
- SizeF.cs
- ResourceExpressionBuilder.cs
- TreeWalkHelper.cs
- ObjectViewEntityCollectionData.cs
- WindowsTokenRoleProvider.cs
- XMLSyntaxException.cs
- CacheSection.cs
- ComplexTypeEmitter.cs
- CanonicalXml.cs
- InputScopeNameConverter.cs
- Boolean.cs
- SharedPerformanceCounter.cs
- XpsPackagingException.cs
- WindowsClientElement.cs
- SqlProviderServices.cs
- clipboard.cs
- StringFreezingAttribute.cs
- WsdlBuildProvider.cs
- DeobfuscatingStream.cs
- metadatamappinghashervisitor.cs
- XmlElementAttributes.cs
- SqlCacheDependencyDatabase.cs
- XmlSignificantWhitespace.cs
- XmlReader.cs
- TracedNativeMethods.cs
- sqlstateclientmanager.cs
- MetafileHeaderWmf.cs
- HtmlSelect.cs
- MatrixTransform3D.cs
- ComponentConverter.cs
- WebBrowserNavigatingEventHandler.cs
- DrawingBrush.cs
- RegexStringValidator.cs
- StreamSecurityUpgradeAcceptor.cs
- PageBorderless.cs
- LocalizationParserHooks.cs
- EventListener.cs
- TransactionCache.cs
- TimeoutStream.cs
- HttpListenerPrefixCollection.cs