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
- MetadataWorkspace.cs
- ServiceInstanceProvider.cs
- unsafenativemethodsother.cs
- StructuralCache.cs
- SerializationFieldInfo.cs
- RootProfilePropertySettingsCollection.cs
- ObjectSet.cs
- XmlDataSource.cs
- MarkedHighlightComponent.cs
- ClientSettingsStore.cs
- SqlParameter.cs
- SafeSystemMetrics.cs
- ContextMenu.cs
- BigInt.cs
- PropertyItemInternal.cs
- HwndAppCommandInputProvider.cs
- LogStore.cs
- Highlights.cs
- HandleCollector.cs
- Size.cs
- PackageFilter.cs
- TextServicesPropertyRanges.cs
- MimeReturn.cs
- MouseGesture.cs
- StorageMappingItemCollection.cs
- MailWriter.cs
- QilReplaceVisitor.cs
- ProcessHost.cs
- ToolStripRenderEventArgs.cs
- ContentTextAutomationPeer.cs
- DbParameterCollectionHelper.cs
- TogglePattern.cs
- FixedSOMContainer.cs
- TypeUtils.cs
- ViewPort3D.cs
- CatalogPart.cs
- ScriptingRoleServiceSection.cs
- CrossSiteScriptingValidation.cs
- PackageDigitalSignature.cs
- InputBinder.cs
- BooleanExpr.cs
- ObjectReaderCompiler.cs
- UserControlParser.cs
- WebContext.cs
- ResourceDisplayNameAttribute.cs
- DataIdProcessor.cs
- MessageSmuggler.cs
- ErrorHandlerModule.cs
- LinkTarget.cs
- CheckBoxList.cs
- GradientSpreadMethodValidation.cs
- XamlTypeMapper.cs
- MethodImplAttribute.cs
- DataPagerCommandEventArgs.cs
- AnnouncementSendsAsyncResult.cs
- TypeElement.cs
- DataSpaceManager.cs
- SimpleNameService.cs
- FrameworkElement.cs
- Cursors.cs
- ResXFileRef.cs
- TreeWalkHelper.cs
- OleDbRowUpdatingEvent.cs
- BaseResourcesBuildProvider.cs
- ClientSideProviderDescription.cs
- PinnedBufferMemoryStream.cs
- LinkClickEvent.cs
- EventBuilder.cs
- ResourceWriter.cs
- UInt16Converter.cs
- TransactionProtocol.cs
- Dictionary.cs
- ControlOperationInvoker.cs
- SyntaxCheck.cs
- ZipIOCentralDirectoryFileHeader.cs
- MessageSecurityTokenVersion.cs
- ThreadSafeList.cs
- DbProviderManifest.cs
- ScrollPattern.cs
- CellTreeNodeVisitors.cs
- QueryIntervalOp.cs
- PipelineModuleStepContainer.cs
- StringStorage.cs
- SystemIcmpV4Statistics.cs
- PagedControl.cs
- MemberExpressionHelper.cs
- Visitors.cs
- AstTree.cs
- X509UI.cs
- HtmlProps.cs
- infer.cs
- TextAnchor.cs
- TreeNodeMouseHoverEvent.cs
- HttpCapabilitiesBase.cs
- DeviceOverridableAttribute.cs
- QfeChecker.cs
- WindowsListViewGroup.cs
- DateTimeFormatInfo.cs
- ParameterBinding.cs
- CrossAppDomainChannel.cs