Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Debugger / InstrumentationTracker.cs / 1305376 / InstrumentationTracker.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Debugger { using System; using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq.Expressions; using System.IO; using System.Runtime; // Keep track of instrumentation information. // - which subroot has source file but not yet instrumented. // - which subroots share the same source file // SubRoot is defined as an activity that has a source file // (Custom Activity). class InstrumentationTracker { // Root of the workflow to keep track. Activity root; // Mapping of subroots to their source files. DictionaryuninstrumentedSubRoots; Dictionary UninstrumentedSubRoots { get { if (this.uninstrumentedSubRoots == null) { InitializeUninstrumentedSubRoots(); } return this.uninstrumentedSubRoots; } } public InstrumentationTracker(Activity root) { this.root = root; } // Initialize UninstrumentedSubRoots by traversing the workflow. void InitializeUninstrumentedSubRoots() { this.uninstrumentedSubRoots = new Dictionary (); Queue activitiesRemaining = new Queue (); CollectSubRoot(this.root); activitiesRemaining.Enqueue(this.root); while (activitiesRemaining.Count > 0) { Activity toProcess = activitiesRemaining.Dequeue(); foreach (Activity activity in WorkflowInspectionServices.GetActivities(toProcess)) { CollectSubRoot(activity); activitiesRemaining.Enqueue(activity); } } } // Collect subroot as uninstrumented activity. void CollectSubRoot(Activity activity) { string sourcePath = XamlDebuggerXmlReader.GetFileName(activity) as string; if (!string.IsNullOrEmpty(sourcePath)) { this.uninstrumentedSubRoots.Add(activity, sourcePath); } } // Whether this is unistrumented sub root. public bool IsUninstrumentedSubRoot(Activity subRoot) { return this.UninstrumentedSubRoots.ContainsKey(subRoot); } // Returns Activities that have the same source as the given subRoot. // This will return other instantiation of the same custom activity. // Needed to avoid re-instrumentation of the same file. public List GetSameSourceSubRoots(Activity subRoot) { string sourcePath; List sameSourceSubRoots = new List (); if (this.UninstrumentedSubRoots.TryGetValue(subRoot, out sourcePath)) { foreach (KeyValuePair entry in this.UninstrumentedSubRoots) { if (entry.Value == sourcePath && entry.Key != subRoot) { sameSourceSubRoots.Add(entry.Key); } } } return sameSourceSubRoots; } // Mark this sub root as instrumented. public void MarkInstrumented(Activity subRoot) { this.UninstrumentedSubRoots.Remove(subRoot); } } } // 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
- ProfileGroupSettings.cs
- Roles.cs
- StagingAreaInputItem.cs
- QilReplaceVisitor.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- PartitionResolver.cs
- MailAddressParser.cs
- EntityConnectionStringBuilder.cs
- NavigationHelper.cs
- TableItemStyle.cs
- TraversalRequest.cs
- BrowserInteropHelper.cs
- MonthCalendar.cs
- ServiceAuthorizationElement.cs
- ApplicationDirectoryMembershipCondition.cs
- RangeBase.cs
- HtmlTableCellCollection.cs
- WSHttpBindingCollectionElement.cs
- TableRow.cs
- WriteFileContext.cs
- ItemsPanelTemplate.cs
- AssemblyNameUtility.cs
- Currency.cs
- xmlsaver.cs
- TreeNodeCollectionEditor.cs
- Bitmap.cs
- X509CertificateRecipientClientCredential.cs
- UnionCqlBlock.cs
- ObjectStateFormatter.cs
- XmlWrappingReader.cs
- FilteredDataSetHelper.cs
- RoleManagerSection.cs
- Model3DGroup.cs
- ILGenerator.cs
- Token.cs
- CreateUserErrorEventArgs.cs
- Padding.cs
- ToolbarAUtomationPeer.cs
- BoundColumn.cs
- NavigationHelper.cs
- CountAggregationOperator.cs
- MetadataArtifactLoaderComposite.cs
- IxmlLineInfo.cs
- NavigationEventArgs.cs
- JournalNavigationScope.cs
- HostExecutionContextManager.cs
- PlaceHolder.cs
- TopClause.cs
- SizeIndependentAnimationStorage.cs
- SoapSchemaExporter.cs
- ToggleButtonAutomationPeer.cs
- NavigationWindow.cs
- DispatcherExceptionFilterEventArgs.cs
- Win32PrintDialog.cs
- ImmutableCollection.cs
- RestClientProxyHandler.cs
- Pkcs7Recipient.cs
- MarshalDirectiveException.cs
- CompModSwitches.cs
- ToggleProviderWrapper.cs
- OracleCommand.cs
- DesignerActionKeyboardBehavior.cs
- BufferCache.cs
- ListView.cs
- ListViewItem.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- RoutedEventConverter.cs
- MonthCalendarDesigner.cs
- SoapEnumAttribute.cs
- CodeTypeDeclaration.cs
- CodeFieldReferenceExpression.cs
- Bezier.cs
- PropertyConverter.cs
- SynchronizationScope.cs
- PagerSettings.cs
- VariantWrapper.cs
- WebPartConnectVerb.cs
- InternalControlCollection.cs
- IntellisenseTextBox.designer.cs
- Rotation3D.cs
- DocumentOrderComparer.cs
- CatalogPartChrome.cs
- LookupTables.cs
- IdlingCommunicationPool.cs
- DataFormats.cs
- ProvidePropertyAttribute.cs
- Size3DConverter.cs
- PlaceHolder.cs
- IPGlobalProperties.cs
- GroupBoxAutomationPeer.cs
- CommentGlyph.cs
- ResourceContainer.cs
- Point4DValueSerializer.cs
- AliasExpr.cs
- IFlowDocumentViewer.cs
- ServicePoint.cs
- SiteMapPath.cs
- webproxy.cs
- EventRouteFactory.cs
- QueryOutputWriter.cs