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
- HtmlCommandAdapter.cs
- Form.cs
- PropertyGridEditorPart.cs
- HybridObjectCache.cs
- ZipIOLocalFileHeader.cs
- TimelineGroup.cs
- SignerInfo.cs
- SHA1Managed.cs
- dbenumerator.cs
- FontUnitConverter.cs
- COM2ExtendedUITypeEditor.cs
- AssemblyHelper.cs
- AdapterUtil.cs
- OrderedEnumerableRowCollection.cs
- WebPartDisplayModeEventArgs.cs
- EncryptedData.cs
- Type.cs
- ApplicationTrust.cs
- SettingsProviderCollection.cs
- BooleanExpr.cs
- CharacterMetrics.cs
- ProfilePropertySettings.cs
- HuffmanTree.cs
- XamlPoint3DCollectionSerializer.cs
- MessageQueueTransaction.cs
- PolyQuadraticBezierSegment.cs
- ClonableStack.cs
- AlignmentYValidation.cs
- Visual3D.cs
- MarshalByRefObject.cs
- SelectionPattern.cs
- DocobjHost.cs
- WindowsServiceCredential.cs
- WindowsScroll.cs
- EventlogProvider.cs
- XPathNodePointer.cs
- TdsParser.cs
- DocumentGridContextMenu.cs
- CodeThrowExceptionStatement.cs
- StateManagedCollection.cs
- XmlEntity.cs
- TypeUtils.cs
- XmlSchemaAppInfo.cs
- ListViewDeleteEventArgs.cs
- MenuItemStyleCollection.cs
- AccessDataSource.cs
- MSAAEventDispatcher.cs
- StrokeNode.cs
- BrushValueSerializer.cs
- EastAsianLunisolarCalendar.cs
- NullRuntimeConfig.cs
- MessageSecurityTokenVersion.cs
- NotifyInputEventArgs.cs
- DropShadowEffect.cs
- TableDetailsCollection.cs
- PEFileEvidenceFactory.cs
- Add.cs
- MaterialGroup.cs
- RoutedPropertyChangedEventArgs.cs
- DelayedRegex.cs
- PageResolution.cs
- ResourceWriter.cs
- TraceUtility.cs
- ZipIOLocalFileHeader.cs
- Operator.cs
- SizeChangedEventArgs.cs
- XmlDocumentType.cs
- WebSysDescriptionAttribute.cs
- HtmlEncodedRawTextWriter.cs
- ValidationHelper.cs
- IndexOutOfRangeException.cs
- LinkedList.cs
- MinimizableAttributeTypeConverter.cs
- DESCryptoServiceProvider.cs
- StandardCommands.cs
- GridViewDeleteEventArgs.cs
- FactoryRecord.cs
- DesignerTransactionCloseEvent.cs
- XmlConvert.cs
- NavigationPropertySingletonExpression.cs
- DataGridViewCellEventArgs.cs
- Dump.cs
- CriticalHandle.cs
- SafeSecurityHandles.cs
- AsyncOperation.cs
- DrawingDrawingContext.cs
- SystemGatewayIPAddressInformation.cs
- ApplicationInterop.cs
- _CommandStream.cs
- InternalEnumValidator.cs
- IconConverter.cs
- Authorization.cs
- XmlCharCheckingWriter.cs
- AutoSizeComboBox.cs
- AnimationException.cs
- PartialTrustHelpers.cs
- CodeGenHelper.cs
- SmiTypedGetterSetter.cs
- Empty.cs
- SecureEnvironment.cs