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
- FixedElement.cs
- FragmentQueryKB.cs
- AxImporter.cs
- Run.cs
- AttributeEmitter.cs
- ValidationPropertyAttribute.cs
- ServiceObjectContainer.cs
- CreationContext.cs
- Control.cs
- FixedHighlight.cs
- SqlUtil.cs
- BamlRecordReader.cs
- PropertyEmitter.cs
- PasswordPropertyTextAttribute.cs
- BindStream.cs
- ScrollBarRenderer.cs
- Executor.cs
- EllipticalNodeOperations.cs
- SqlNode.cs
- RoleManagerEventArgs.cs
- TextShapeableCharacters.cs
- XmlHierarchyData.cs
- SeekStoryboard.cs
- RootProfilePropertySettingsCollection.cs
- StringWriter.cs
- WeakHashtable.cs
- TabOrder.cs
- ApplicationManager.cs
- PreviewPageInfo.cs
- TextSyndicationContent.cs
- SeverityFilter.cs
- TaskForm.cs
- LinqDataSourceDeleteEventArgs.cs
- PackageProperties.cs
- StorageScalarPropertyMapping.cs
- ContextQuery.cs
- CellParaClient.cs
- IndentedWriter.cs
- RelativeSource.cs
- ObjectItemAssemblyLoader.cs
- HtmlElementErrorEventArgs.cs
- TaiwanLunisolarCalendar.cs
- SqlStatistics.cs
- AudienceUriMode.cs
- ValidationErrorInfo.cs
- MsdtcClusterUtils.cs
- CacheMode.cs
- DebugViewWriter.cs
- RuntimeDelegateArgument.cs
- Win32Native.cs
- RequiredAttributeAttribute.cs
- QueryableDataSourceEditData.cs
- StateRuntime.cs
- GestureRecognitionResult.cs
- StyleReferenceConverter.cs
- FrameworkContentElement.cs
- DesignerActionUIService.cs
- unsafenativemethodstextservices.cs
- ToolBarButton.cs
- DependencyProperty.cs
- DataFieldConverter.cs
- RequestDescription.cs
- ArrangedElementCollection.cs
- SingleTagSectionHandler.cs
- Selection.cs
- HiddenField.cs
- AnnotationService.cs
- PageAsyncTask.cs
- NameValueFileSectionHandler.cs
- DelimitedListTraceListener.cs
- WebPartEditorOkVerb.cs
- ImageAutomationPeer.cs
- Input.cs
- SafeArchiveContext.cs
- SocketSettings.cs
- DrawingDrawingContext.cs
- InstanceOwnerException.cs
- xml.cs
- EmptyCollection.cs
- BitmapImage.cs
- DebugController.cs
- ZipIOExtraFieldElement.cs
- ColorTransform.cs
- WsrmFault.cs
- SortAction.cs
- wgx_sdk_version.cs
- FullTextState.cs
- ErrorFormatterPage.cs
- DesignerActionKeyboardBehavior.cs
- UIElementAutomationPeer.cs
- IgnoreFileBuildProvider.cs
- TreeChangeInfo.cs
- WorkflowInstance.cs
- ScriptControlDescriptor.cs
- securitycriticaldataformultiplegetandset.cs
- UnsafeNativeMethods.cs
- XmlAttributeOverrides.cs
- MethodBuilder.cs
- listitem.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs