Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Runtime / FaultCallbackWrapper.cs / 1305376 / FaultCallbackWrapper.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Runtime { using System; using System.Runtime; using System.Runtime.Serialization; using System.Security; [DataContract] class FaultCallbackWrapper : CallbackWrapper { static Type faultCallbackType = typeof(FaultCallback); static Type[] faultCallbackParameters = new Type[] { typeof(NativeActivityFaultContext), typeof(Exception), typeof(ActivityInstance) }; public FaultCallbackWrapper(FaultCallback callback, ActivityInstance owningInstance) : base(callback, owningInstance) { } public void Invoke(NativeActivityFaultContext faultContext, Exception propagatedException, ActivityInstance propagatedFrom) { EnsureCallback(faultCallbackType, faultCallbackParameters); FaultCallback faultCallback = (FaultCallback)this.Callback; faultCallback(faultContext, propagatedException, propagatedFrom); } public WorkItem CreateWorkItem(Exception propagatedException, ActivityInstance propagatedFrom, ActivityInstanceReference originalExceptionSource) { return new FaultWorkItem(this, propagatedException, propagatedFrom, originalExceptionSource); } [DataContract] class FaultWorkItem : ActivityExecutionWorkItem { [DataMember] FaultCallbackWrapper callbackWrapper; [DataMember] Exception propagatedException; [DataMember] ActivityInstance propagatedFrom; [DataMember] ActivityInstanceReference originalExceptionSource; public FaultWorkItem(FaultCallbackWrapper callbackWrapper, Exception propagatedException, ActivityInstance propagatedFrom, ActivityInstanceReference originalExceptionSource) : base(callbackWrapper.ActivityInstance) { this.callbackWrapper = callbackWrapper; this.propagatedException = propagatedException; this.propagatedFrom = propagatedFrom; this.originalExceptionSource = originalExceptionSource; } public override ActivityInstance OriginalExceptionSource { get { return this.originalExceptionSource.ActivityInstance; } } public override void TraceCompleted() { if (TD.CompleteFaultWorkItemIsEnabled()) { TD.CompleteFaultWorkItem(this.ActivityInstance.Activity.GetType().ToString(), this.ActivityInstance.Activity.DisplayName, this.ActivityInstance.Id, this.originalExceptionSource.ActivityInstance.Activity.GetType().ToString(), this.originalExceptionSource.ActivityInstance.Activity.DisplayName, this.originalExceptionSource.ActivityInstance.Id, this.propagatedException); } } public override void TraceScheduled() { if (TD.ScheduleFaultWorkItemIsEnabled()) { TD.ScheduleFaultWorkItem(this.ActivityInstance.Activity.GetType().ToString(), this.ActivityInstance.Activity.DisplayName, this.ActivityInstance.Id, this.originalExceptionSource.ActivityInstance.Activity.GetType().ToString(), this.originalExceptionSource.ActivityInstance.Activity.DisplayName, this.originalExceptionSource.ActivityInstance.Id, this.propagatedException); } } public override void TraceStarting() { if (TD.StartFaultWorkItemIsEnabled()) { TD.StartFaultWorkItem(this.ActivityInstance.Activity.GetType().ToString(), this.ActivityInstance.Activity.DisplayName, this.ActivityInstance.Id, this.originalExceptionSource.ActivityInstance.Activity.GetType().ToString(), this.originalExceptionSource.ActivityInstance.Activity.DisplayName, this.originalExceptionSource.ActivityInstance.Id, this.propagatedException); } } public override bool Execute(ActivityExecutor executor, BookmarkManager bookmarkManager) { NativeActivityFaultContext faultContext = null; try { faultContext = new NativeActivityFaultContext(this.ActivityInstance, executor, bookmarkManager, this.propagatedException, this.originalExceptionSource); this.callbackWrapper.Invoke(faultContext, this.propagatedException, this.propagatedFrom); if (!faultContext.IsFaultHandled) { SetExceptionToPropagateWithoutAbort(this.propagatedException); } } catch (Exception e) { if (Fx.IsFatal(e)) { throw; } this.ExceptionToPropagate = e; } finally { if (faultContext != null) { faultContext.Dispose(); } } return true; } } } } // 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
- _DigestClient.cs
- BooleanKeyFrameCollection.cs
- Signature.cs
- TextFormatterHost.cs
- TimestampInformation.cs
- Reference.cs
- OneWayElement.cs
- OdbcException.cs
- TextElementEnumerator.cs
- SqlCachedBuffer.cs
- CodeGroup.cs
- ProjectionPruner.cs
- Switch.cs
- RegionInfo.cs
- Grant.cs
- FragmentNavigationEventArgs.cs
- BitmapEffectRenderDataResource.cs
- CategoryAttribute.cs
- SmtpFailedRecipientsException.cs
- GPRECTF.cs
- NativeCppClassAttribute.cs
- SQLDoubleStorage.cs
- NodeInfo.cs
- PresentationSource.cs
- EventArgs.cs
- adornercollection.cs
- FlowLayout.cs
- HttpException.cs
- ElementHostAutomationPeer.cs
- CompositeActivityValidator.cs
- FixedDocumentSequencePaginator.cs
- InvokeDelegate.cs
- COM2ColorConverter.cs
- HtmlElementCollection.cs
- XsltArgumentList.cs
- PathGradientBrush.cs
- ResourceManagerWrapper.cs
- HttpListenerRequest.cs
- PageWrapper.cs
- NetCodeGroup.cs
- WhitespaceSignificantCollectionAttribute.cs
- InsufficientMemoryException.cs
- TrackingLocation.cs
- ServiceMetadataPublishingElement.cs
- SoapAttributeAttribute.cs
- SmiMetaData.cs
- XmlSchemaParticle.cs
- String.cs
- PropertyMetadata.cs
- DataServiceProviderMethods.cs
- __Filters.cs
- Tile.cs
- ReadOnlyDataSource.cs
- XmlSchemaExternal.cs
- LicFileLicenseProvider.cs
- ArrayList.cs
- LicenseProviderAttribute.cs
- ActivityScheduledRecord.cs
- TextEditorLists.cs
- Transform3DCollection.cs
- XmlDigitalSignatureProcessor.cs
- OverflowException.cs
- Renderer.cs
- SystemUnicastIPAddressInformation.cs
- ImmutableCollection.cs
- ContextQuery.cs
- ToolStripMenuItemDesigner.cs
- SchemaNotation.cs
- TypeListConverter.cs
- ReadOnlyAttribute.cs
- SupportingTokenAuthenticatorSpecification.cs
- DataTableExtensions.cs
- ForEachAction.cs
- Dump.cs
- Double.cs
- Typography.cs
- SingleAnimation.cs
- IndexExpression.cs
- FixedNode.cs
- FlowLayoutPanelDesigner.cs
- SchemaImporterExtensionElement.cs
- ClientScriptItem.cs
- SingleSelectRootGridEntry.cs
- MarkupObject.cs
- TrackingValidationObjectDictionary.cs
- Operand.cs
- TableItemStyle.cs
- XmlWrappingReader.cs
- FileClassifier.cs
- ResXResourceWriter.cs
- FillRuleValidation.cs
- BaseTemplateBuildProvider.cs
- InstancePersistenceEvent.cs
- XmlChoiceIdentifierAttribute.cs
- TouchPoint.cs
- DataRelationCollection.cs
- GeneralTransform3DCollection.cs
- ExpressionPrinter.cs
- DataGridViewCellStyle.cs
- DataTableMapping.cs