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
- BinaryObjectWriter.cs
- PackageRelationship.cs
- PropertyRecord.cs
- PointUtil.cs
- WebPartDisplayModeEventArgs.cs
- BitmapImage.cs
- XmlCodeExporter.cs
- ExpressionCopier.cs
- QueryContinueDragEvent.cs
- FilterException.cs
- LinearQuaternionKeyFrame.cs
- ManagementEventWatcher.cs
- ReferencedType.cs
- InputReport.cs
- WebBrowserContainer.cs
- EventArgs.cs
- CodeMethodReturnStatement.cs
- EventProperty.cs
- ApplicationFileParser.cs
- codemethodreferenceexpression.cs
- sqlmetadatafactory.cs
- FloatMinMaxAggregationOperator.cs
- DataGridViewCell.cs
- ReversePositionQuery.cs
- StateMachineDesignerPaint.cs
- WebHttpBindingCollectionElement.cs
- GeneralTransform3DGroup.cs
- SystemSounds.cs
- Highlights.cs
- SafeSystemMetrics.cs
- XamlDesignerSerializationManager.cs
- FunctionDetailsReader.cs
- ActivityDelegate.cs
- XslException.cs
- MessageQueueKey.cs
- SmiEventSink.cs
- ApplicationServiceManager.cs
- EditorPart.cs
- GAC.cs
- BinaryFormatterWriter.cs
- EventLogLink.cs
- HttpCookie.cs
- XmlCharType.cs
- UnitySerializationHolder.cs
- ParseChildrenAsPropertiesAttribute.cs
- CLRBindingWorker.cs
- KeyInfo.cs
- Stroke2.cs
- DocumentCollection.cs
- SamlAttributeStatement.cs
- BitmapVisualManager.cs
- TcpProcessProtocolHandler.cs
- UIInitializationException.cs
- SettingsPropertyWrongTypeException.cs
- WebPartPersonalization.cs
- XPathParser.cs
- BamlLocalizableResourceKey.cs
- SafeRegistryHandle.cs
- PageAsyncTaskManager.cs
- XsltQilFactory.cs
- XmlHierarchyData.cs
- SQLResource.cs
- TreeViewCancelEvent.cs
- DesignTimeXamlWriter.cs
- RectIndependentAnimationStorage.cs
- OleDbEnumerator.cs
- MobileRedirect.cs
- Pkcs7Recipient.cs
- SettingsSection.cs
- OperationDescriptionCollection.cs
- TreeWalker.cs
- ExtendedPropertyCollection.cs
- TdsParserStaticMethods.cs
- ActivityTypeCodeDomSerializer.cs
- NavigationEventArgs.cs
- ThreadExceptionDialog.cs
- ReadingWritingEntityEventArgs.cs
- BufferedGraphicsManager.cs
- CodeValidator.cs
- SchemaLookupTable.cs
- TextElement.cs
- XsltArgumentList.cs
- QilNode.cs
- ObjectConverter.cs
- PersistenceProviderFactory.cs
- InvalidPrinterException.cs
- ProjectedSlot.cs
- ParamArrayAttribute.cs
- FileDialogPermission.cs
- DockPanel.cs
- DataControlFieldHeaderCell.cs
- SQLMembershipProvider.cs
- FormatPage.cs
- OracleRowUpdatingEventArgs.cs
- DetailsViewDeleteEventArgs.cs
- ExpressionBinding.cs
- ArrayConverter.cs
- FormatterConverter.cs
- CustomCategoryAttribute.cs
- GridErrorDlg.cs