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
- IERequestCache.cs
- DockingAttribute.cs
- PTProvider.cs
- DirectoryRedirect.cs
- FragmentQuery.cs
- RightsManagementEncryptionTransform.cs
- IssuedTokenServiceCredential.cs
- WebScriptMetadataInstanceContextProvider.cs
- TableParaClient.cs
- MetadataItem.cs
- ClientEventManager.cs
- WsatServiceCertificate.cs
- XmlSchemaSimpleType.cs
- TreeViewImageIndexConverter.cs
- thaishape.cs
- Trace.cs
- ILGenerator.cs
- ReturnValue.cs
- Terminate.cs
- ControlParser.cs
- ProvideValueServiceProvider.cs
- TypeConverterBase.cs
- WindowVisualStateTracker.cs
- DecoderReplacementFallback.cs
- EndPoint.cs
- MultipleViewProviderWrapper.cs
- HasCopySemanticsAttribute.cs
- EnumMember.cs
- MiniModule.cs
- MessageDecoder.cs
- DataGridAddNewRow.cs
- FileRecordSequenceCompletedAsyncResult.cs
- MultiView.cs
- MaskedTextProvider.cs
- DesignUtil.cs
- FontClient.cs
- AppManager.cs
- ScriptResourceInfo.cs
- XPathParser.cs
- PropertyFilterAttribute.cs
- FormViewAutoFormat.cs
- PeerNameRecord.cs
- Gdiplus.cs
- ApplicationManager.cs
- SettingsPropertyNotFoundException.cs
- HandleRef.cs
- EventProperty.cs
- SafeFileHandle.cs
- CrossSiteScriptingValidation.cs
- Transactions.cs
- IndexOutOfRangeException.cs
- Registry.cs
- TaiwanLunisolarCalendar.cs
- InputBindingCollection.cs
- SchemaTableOptionalColumn.cs
- WebPartDeleteVerb.cs
- ConfigErrorGlyph.cs
- MdiWindowListItemConverter.cs
- Serializer.cs
- Profiler.cs
- DispatcherExceptionEventArgs.cs
- WebPartDescription.cs
- Transactions.cs
- ContentIterators.cs
- AdPostCacheSubstitution.cs
- SqlPersonalizationProvider.cs
- DynamicResourceExtension.cs
- SimpleHandlerFactory.cs
- IsolatedStorageFileStream.cs
- Variant.cs
- PagesChangedEventArgs.cs
- Win32Exception.cs
- DependencyProperty.cs
- SqlBuffer.cs
- ProxyWebPartConnectionCollection.cs
- WebConvert.cs
- DataServiceQueryException.cs
- XDRSchema.cs
- PackageStore.cs
- HttpValueCollection.cs
- NameNode.cs
- SeekStoryboard.cs
- BmpBitmapDecoder.cs
- PrtCap_Base.cs
- QuadTree.cs
- AssemblyBuilder.cs
- UpDownEvent.cs
- Missing.cs
- ObjectDataSourceEventArgs.cs
- MediaTimeline.cs
- StructuralComparisons.cs
- StateInitialization.cs
- SuppressedPackageProperties.cs
- TableRow.cs
- UnauthorizedWebPart.cs
- PointLightBase.cs
- ScriptIgnoreAttribute.cs
- BrushMappingModeValidation.cs
- ContentType.cs
- ReflectionUtil.cs