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
- CallTemplateAction.cs
- DesignerVerb.cs
- BinaryReader.cs
- WebPartZone.cs
- AddressingVersion.cs
- Collection.cs
- SmiEventStream.cs
- ConfigXmlWhitespace.cs
- PageStatePersister.cs
- DesignerDataTableBase.cs
- MonikerHelper.cs
- SrgsItemList.cs
- Bits.cs
- WindowsPen.cs
- HostingEnvironment.cs
- AnnotationService.cs
- SamlSerializer.cs
- EventRoute.cs
- ToolStripDropDownClosingEventArgs.cs
- LoginStatusDesigner.cs
- SqlDataSourceParameterParser.cs
- Trace.cs
- XmlNullResolver.cs
- CredentialCache.cs
- TypeGenericEnumerableViewSchema.cs
- WrapPanel.cs
- ExpressionVisitorHelpers.cs
- ModelPerspective.cs
- PageAsyncTask.cs
- DataGridPagerStyle.cs
- ShaderEffect.cs
- DriveInfo.cs
- EditableTreeList.cs
- BaseCodeDomTreeGenerator.cs
- WindowsFont.cs
- DurationConverter.cs
- ContentType.cs
- PasswordPropertyTextAttribute.cs
- SimpleHandlerBuildProvider.cs
- HelpKeywordAttribute.cs
- StylusPoint.cs
- WebPartEditorCancelVerb.cs
- EnumValAlphaComparer.cs
- CancellationHandler.cs
- Graphics.cs
- XmlSchemaObject.cs
- UInt32Converter.cs
- InternalConfigEventArgs.cs
- WindowsTooltip.cs
- CodeParameterDeclarationExpression.cs
- NameObjectCollectionBase.cs
- DesignerLoader.cs
- SiteMapDataSourceView.cs
- Configuration.cs
- ObjectDataSourceMethodEventArgs.cs
- RecoverInstanceLocksCommand.cs
- DataGridViewControlCollection.cs
- BamlLocalizableResourceKey.cs
- ScrollItemPattern.cs
- PagedDataSource.cs
- DependentTransaction.cs
- CultureInfoConverter.cs
- DbProviderFactories.cs
- InternalTypeHelper.cs
- UnicodeEncoding.cs
- RecognizerInfo.cs
- GenericsInstances.cs
- AutomationAttributeInfo.cs
- TabControlAutomationPeer.cs
- UnsafeNativeMethods.cs
- SQlBooleanStorage.cs
- ActivationArguments.cs
- LogWriteRestartAreaAsyncResult.cs
- FileDialogCustomPlaces.cs
- PropertyPushdownHelper.cs
- DesignerLoader.cs
- CompositeActivityDesigner.cs
- ProxyWebPartManager.cs
- TableItemProviderWrapper.cs
- UpDownBase.cs
- CompiledELinqQueryState.cs
- ListBoxChrome.cs
- DropShadowEffect.cs
- BindingListCollectionView.cs
- LocalsItemDescription.cs
- IisTraceWebEventProvider.cs
- WorkflowMarkupSerializationManager.cs
- SiteMapDataSourceView.cs
- ObjectCacheHost.cs
- DurableInstanceManager.cs
- COM2PictureConverter.cs
- FormatVersion.cs
- TextEditorTyping.cs
- UpdateExpressionVisitor.cs
- ConnectionStringsSection.cs
- XmlDocumentType.cs
- CultureTableRecord.cs
- NewArrayExpression.cs
- PrefixQName.cs
- XmlAttributeCache.cs