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
- EntityDataSourceState.cs
- HtmlInputFile.cs
- HorizontalAlignConverter.cs
- ControlHelper.cs
- BridgeDataReader.cs
- SmiEventSink_Default.cs
- InvokeSchedule.cs
- IImplicitResourceProvider.cs
- __FastResourceComparer.cs
- FileUtil.cs
- _ConnectStream.cs
- CompositeDataBoundControl.cs
- PingOptions.cs
- invalidudtexception.cs
- ConnectionInterfaceCollection.cs
- FontNamesConverter.cs
- MouseActionConverter.cs
- ReservationNotFoundException.cs
- ImageButton.cs
- DataPagerField.cs
- MetadataItemCollectionFactory.cs
- Rfc2898DeriveBytes.cs
- Qualifier.cs
- ResourceFallbackManager.cs
- CodeGenHelper.cs
- ParseNumbers.cs
- CdpEqualityComparer.cs
- FormattedText.cs
- Multiply.cs
- ContextStack.cs
- RegisteredScript.cs
- GridViewSortEventArgs.cs
- ImageEditor.cs
- WorkflowRequestContext.cs
- CryptoKeySecurity.cs
- XmlRawWriterWrapper.cs
- ContractComponent.cs
- FocusWithinProperty.cs
- NetMsmqBindingCollectionElement.cs
- Executor.cs
- ConfigurationSection.cs
- DataRelationPropertyDescriptor.cs
- DisplayInformation.cs
- DataGridViewControlCollection.cs
- Transform.cs
- ForAllOperator.cs
- HttpResponseHeader.cs
- localization.cs
- UnhandledExceptionEventArgs.cs
- IndexingContentUnit.cs
- RightsManagementPermission.cs
- HtmlTableCell.cs
- _TLSstream.cs
- TextPointer.cs
- CodeTypeConstructor.cs
- _PooledStream.cs
- CqlGenerator.cs
- xmlfixedPageInfo.cs
- StorageConditionPropertyMapping.cs
- SemanticKeyElement.cs
- EdmItemError.cs
- GCHandleCookieTable.cs
- DelegateSerializationHolder.cs
- PreloadedPackages.cs
- MissingFieldException.cs
- ValidationHelpers.cs
- smtpconnection.cs
- BitmapPalettes.cs
- TableSectionStyle.cs
- DeliveryRequirementsAttribute.cs
- DataListItemEventArgs.cs
- ListBoxItemAutomationPeer.cs
- CookielessHelper.cs
- ToolStripMenuItem.cs
- TraceContextRecord.cs
- StubHelpers.cs
- TaiwanCalendar.cs
- AlternateViewCollection.cs
- FilteredAttributeCollection.cs
- UnsafeNativeMethods.cs
- HttpPostedFileBase.cs
- ConfigurationSection.cs
- SqlCommand.cs
- ConnectionManagementSection.cs
- XslVisitor.cs
- GeneralEndpointIdentity.cs
- ServiceHostingEnvironment.cs
- HandleValueEditor.cs
- StatusStrip.cs
- PlainXmlWriter.cs
- SchemaElementLookUpTable.cs
- HtmlTableRowCollection.cs
- TransformConverter.cs
- DataTableClearEvent.cs
- UITypeEditor.cs
- OneWayChannelListener.cs
- WsatExtendedInformation.cs
- MenuTracker.cs
- ProtocolState.cs
- StreamBodyWriter.cs