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
- DataColumn.cs
- XmlExpressionDumper.cs
- StrongNameUtility.cs
- RedBlackList.cs
- HttpConfigurationContext.cs
- ListViewContainer.cs
- StringFreezingAttribute.cs
- EntityContainerRelationshipSetEnd.cs
- PointAnimationUsingKeyFrames.cs
- Separator.cs
- RawStylusInputCustomDataList.cs
- FilterException.cs
- XsdDateTime.cs
- SqlException.cs
- ExtenderProvidedPropertyAttribute.cs
- ISessionStateStore.cs
- AutomationIdentifier.cs
- DataGridViewIntLinkedList.cs
- ArithmeticException.cs
- AssertSection.cs
- XamlBuildTaskServices.cs
- Classification.cs
- BrushMappingModeValidation.cs
- PseudoWebRequest.cs
- IPCCacheManager.cs
- NetworkInformationException.cs
- Matrix3DValueSerializer.cs
- Effect.cs
- DBParameter.cs
- PrintDialog.cs
- BrowserDefinition.cs
- XpsSerializationManagerAsync.cs
- StyleSheetComponentEditor.cs
- StreamMarshaler.cs
- GraphicsPath.cs
- RecommendedAsConfigurableAttribute.cs
- DesignOnlyAttribute.cs
- SyndicationDeserializer.cs
- VarRefManager.cs
- TakeOrSkipWhileQueryOperator.cs
- DataReaderContainer.cs
- ValueSerializer.cs
- DispatcherEventArgs.cs
- CultureMapper.cs
- CommonXSendMessage.cs
- ColorAnimationUsingKeyFrames.cs
- OdbcErrorCollection.cs
- ChangeConflicts.cs
- DataTableReader.cs
- StoreItemCollection.Loader.cs
- Int16Animation.cs
- Message.cs
- TreeViewDesigner.cs
- DataReceivedEventArgs.cs
- ListBoxItemWrapperAutomationPeer.cs
- GroupItem.cs
- MailMessage.cs
- HttpWebRequest.cs
- BaseAppDomainProtocolHandler.cs
- RuleRef.cs
- DesignerAdRotatorAdapter.cs
- AxisAngleRotation3D.cs
- ObjectContext.cs
- PerfCounterSection.cs
- TextElementEditingBehaviorAttribute.cs
- TransportListener.cs
- XmlDocument.cs
- Expressions.cs
- ResourcePool.cs
- ThreadPoolTaskScheduler.cs
- InternalSafeNativeMethods.cs
- ViewStateException.cs
- GridView.cs
- TextTreeExtractElementUndoUnit.cs
- EntityDataReader.cs
- ApplicationActivator.cs
- WebErrorHandler.cs
- DoubleAnimation.cs
- SoundPlayer.cs
- LingerOption.cs
- InputMethod.cs
- GridEntryCollection.cs
- InitializationEventAttribute.cs
- CodeCatchClauseCollection.cs
- DBConnectionString.cs
- DataGridDesigner.cs
- DataDocumentXPathNavigator.cs
- CombinedGeometry.cs
- GetIndexBinder.cs
- AppDomainResourcePerfCounters.cs
- DefaultHttpHandler.cs
- TraceHandlerErrorFormatter.cs
- XmlSchemaExporter.cs
- QilInvoke.cs
- loginstatus.cs
- XmlSchemaGroup.cs
- StrongTypingException.cs
- CompilerGlobalScopeAttribute.cs
- UserNameSecurityToken.cs
- PackWebRequestFactory.cs