Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Debugger / DebugController.cs / 1305376 / DebugController.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Debugger { using System; using System.Activities.Hosting; using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq.Expressions; using System.Runtime; using System.Activities.Validation; // DebugController, one is needed per ActivityExecutor. [DebuggerNonUserCode] class DebugController { WorkflowInstance host; DebugManager debugManager; // Instantiated after first instrumentation is successful. public DebugController(WorkflowInstance host) { this.host = host; } public void WorkflowStarted() { } public void WorkflowCompleted() { if (this.debugManager != null) { this.debugManager.Exit(); this.debugManager = null; } } public void ActivityStarted(ActivityInstance activityInstance) { if (!(activityInstance.Activity.RootActivity is Constraint)) // Don't debug an activity in a Constraint { EnsureActivityInstrumented(activityInstance, false); this.debugManager.OnEnterState(activityInstance); } } public void ActivityCompleted(ActivityInstance activityInstance) { if (!(activityInstance.Activity.RootActivity is Constraint)) // Don't debug an activity in a Constraint { EnsureActivityInstrumented(activityInstance, true); this.debugManager.OnLeaveState(activityInstance); } } // Lazy instrumentation. // Parameter primeCurrentInstance specify whether priming (if needed) is done // up to the current instance. Set this to true when calling this from an "...Completed" // (exit state). void EnsureActivityInstrumented(ActivityInstance instance, bool primeCurrentInstance) { if (this.debugManager == null) { // Workflow has not been instrumented yet. // Finding rootInstance and check all referred sources. Stackancestors = new Stack (); while (instance.Parent != null) { ancestors.Push(instance); instance = instance.Parent; } Activity rootActivity = instance.Activity; // Do breakOnStartup only if debugger is attached from the beginning, i.e. no priming needed. // This specified by change the last parameter below to: "(ancestors.Count == 0)". this.debugManager = new DebugManager(rootActivity, "Workflow", "Workflow", "DebuggerThread", false, this.host, ancestors.Count == 0); if (ancestors.Count > 0) { // Priming the background thread this.debugManager.IsPriming = true; while (ancestors.Count > 0) { ActivityInstance ancestorInstance = ancestors.Pop(); this.debugManager.OnEnterState(ancestorInstance); } if (primeCurrentInstance) { this.debugManager.OnEnterState(instance); } this.debugManager.IsPriming = false; } } } } } // 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
- PrePostDescendentsWalker.cs
- AssemblyAttributes.cs
- LocalValueEnumerator.cs
- Attributes.cs
- CharacterString.cs
- ProviderConnectionPoint.cs
- DesignerDataView.cs
- AspNetCompatibilityRequirementsAttribute.cs
- MenuItemStyleCollection.cs
- BitmapSource.cs
- DeferredTextReference.cs
- RangeBaseAutomationPeer.cs
- FeatureAttribute.cs
- QuaternionKeyFrameCollection.cs
- WindowsGraphicsWrapper.cs
- HostingEnvironmentException.cs
- CngKeyCreationParameters.cs
- GroupBox.cs
- WaitForChangedResult.cs
- ErrorHandler.cs
- ToolboxItemLoader.cs
- SparseMemoryStream.cs
- Mouse.cs
- DataGridViewSelectedRowCollection.cs
- BaseDataList.cs
- SharedDp.cs
- ToolboxService.cs
- SqlBulkCopy.cs
- CodeNamespaceImportCollection.cs
- ConfigurationSection.cs
- SoapSchemaExporter.cs
- ToolStripPanelCell.cs
- TaskFileService.cs
- CommandLibraryHelper.cs
- VisualStyleElement.cs
- PropertyTabAttribute.cs
- HttpAsyncResult.cs
- Interop.cs
- panel.cs
- PartialArray.cs
- DrawingAttributes.cs
- xdrvalidator.cs
- AdornerPresentationContext.cs
- LicenseProviderAttribute.cs
- EventBuilder.cs
- GridSplitter.cs
- IncrementalHitTester.cs
- WsatConfiguration.cs
- WizardForm.cs
- GenericWebPart.cs
- CacheModeValueSerializer.cs
- XmlSchemaAll.cs
- DataTemplateSelector.cs
- RecommendedAsConfigurableAttribute.cs
- BindingCollection.cs
- SerializableAuthorizationContext.cs
- HelpKeywordAttribute.cs
- XamlUtilities.cs
- DataRowComparer.cs
- ProxyWebPartManager.cs
- DataGridViewMethods.cs
- WorkItem.cs
- ToolStripRenderer.cs
- CurrencyWrapper.cs
- Polyline.cs
- WebRequestModuleElement.cs
- AlternateViewCollection.cs
- AdRotatorDesigner.cs
- ObjectStorage.cs
- XmlSchemaAny.cs
- TreeBuilderBamlTranslator.cs
- WsatProxy.cs
- ToolStripGrip.cs
- LinqToSqlWrapper.cs
- SafeNativeMethods.cs
- Symbol.cs
- ellipse.cs
- SmiSettersStream.cs
- ProfileManager.cs
- ListViewDesigner.cs
- PtsContext.cs
- ObjectDataSourceView.cs
- Serializer.cs
- InstanceDescriptor.cs
- StylusPointDescription.cs
- DataGridViewMethods.cs
- ChunkedMemoryStream.cs
- SafeLocalMemHandle.cs
- EventLogStatus.cs
- BamlRecordHelper.cs
- Soap12ServerProtocol.cs
- HandledMouseEvent.cs
- LongValidator.cs
- AppAction.cs
- Invariant.cs
- UserValidatedEventArgs.cs
- Selector.cs
- StructuredTypeEmitter.cs
- EntityDataReader.cs
- ConfigurationLockCollection.cs