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
- HtmlButton.cs
- WindowsSysHeader.cs
- ClientData.cs
- DSACryptoServiceProvider.cs
- Pkcs7Signer.cs
- SoapBinding.cs
- FormsAuthenticationUser.cs
- SettingsAttributeDictionary.cs
- FontSource.cs
- TraceHandler.cs
- CanExecuteRoutedEventArgs.cs
- GraphicsPathIterator.cs
- TemplateControlBuildProvider.cs
- ToolBarButtonDesigner.cs
- HttpListenerResponse.cs
- JsonWriterDelegator.cs
- PngBitmapEncoder.cs
- TextEditorCharacters.cs
- Keyboard.cs
- SerializationInfo.cs
- SystemIPGlobalStatistics.cs
- ThemeDirectoryCompiler.cs
- GeneralTransform3D.cs
- StringHelper.cs
- CompilationLock.cs
- PropertyMap.cs
- XmlSchemaType.cs
- ChangePasswordAutoFormat.cs
- FileLoadException.cs
- BufferedGraphicsContext.cs
- TakeQueryOptionExpression.cs
- unsafenativemethodsother.cs
- TextDataBindingHandler.cs
- ThumbAutomationPeer.cs
- SqlProviderServices.cs
- StylusButtonCollection.cs
- SessionEndingCancelEventArgs.cs
- ProcessModelSection.cs
- FileVersionInfo.cs
- TextElement.cs
- Compiler.cs
- XamlUtilities.cs
- SqlInternalConnection.cs
- MsmqUri.cs
- DynamicArgumentDesigner.xaml.cs
- DataSourceXmlSubItemAttribute.cs
- SizeIndependentAnimationStorage.cs
- StyleCollection.cs
- ErrorProvider.cs
- CodeDomConfigurationHandler.cs
- SmtpTransport.cs
- CodeExporter.cs
- URLMembershipCondition.cs
- brushes.cs
- AssemblySettingAttributes.cs
- UnescapedXmlDiagnosticData.cs
- OrderByQueryOptionExpression.cs
- MemberRelationshipService.cs
- DataTable.cs
- AttributeEmitter.cs
- Quad.cs
- ScriptManagerProxy.cs
- RayMeshGeometry3DHitTestResult.cs
- ConfigXmlElement.cs
- PlainXmlSerializer.cs
- RoleGroup.cs
- arabicshape.cs
- TypeDescriptorFilterService.cs
- CultureSpecificCharacterBufferRange.cs
- ValidationRuleCollection.cs
- ModuleBuilderData.cs
- LabelAutomationPeer.cs
- DataGridViewColumnHeaderCell.cs
- WorkflowDesigner.cs
- _AcceptOverlappedAsyncResult.cs
- Literal.cs
- DrawingAttributes.cs
- FontDriver.cs
- EnvironmentPermission.cs
- QueryableDataSource.cs
- HasCopySemanticsAttribute.cs
- TreeNodeCollection.cs
- HttpHandlerAction.cs
- __ConsoleStream.cs
- SimpleParser.cs
- EventBuilder.cs
- UIElementHelper.cs
- SerialPort.cs
- ToolZoneDesigner.cs
- DataGridViewToolTip.cs
- CodeAttributeArgumentCollection.cs
- PrintControllerWithStatusDialog.cs
- XmlConvert.cs
- MenuCommands.cs
- ExpressionBuilderContext.cs
- DataSourceComponent.cs
- XmlSchemaDocumentation.cs
- XPathEmptyIterator.cs
- GrammarBuilderWildcard.cs
- ObjectCloneHelper.cs