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
- ExpandCollapseProviderWrapper.cs
- WebPartTransformerCollection.cs
- HttpRequestCacheValidator.cs
- FrameworkContentElement.cs
- ListItemCollection.cs
- HttpModule.cs
- CompositeCollectionView.cs
- XmlWrappingReader.cs
- CapabilitiesPattern.cs
- DataServiceHost.cs
- MappedMetaModel.cs
- ClonableStack.cs
- DriveNotFoundException.cs
- DataGridViewHeaderCell.cs
- PerfCounters.cs
- HttpAsyncResult.cs
- DataListDesigner.cs
- Quaternion.cs
- NonClientArea.cs
- WebPartUserCapability.cs
- ToolBar.cs
- DBSqlParserTableCollection.cs
- TextReader.cs
- XmlDataImplementation.cs
- WindowsSecurityTokenAuthenticator.cs
- Converter.cs
- Effect.cs
- PerformanceCounterPermissionEntryCollection.cs
- DrawingContextDrawingContextWalker.cs
- HwndStylusInputProvider.cs
- DefaultMemberAttribute.cs
- PropertyValue.cs
- WebRequest.cs
- TextElement.cs
- MatrixKeyFrameCollection.cs
- PriorityQueue.cs
- RawStylusInputCustomDataList.cs
- FileUpload.cs
- ObjectSet.cs
- Hex.cs
- ProfileService.cs
- GridViewEditEventArgs.cs
- EpmSyndicationContentSerializer.cs
- BitmapEffectInput.cs
- DiscriminatorMap.cs
- SecurityKeyIdentifierClause.cs
- DateBoldEvent.cs
- PairComparer.cs
- SafeRightsManagementSessionHandle.cs
- PerformanceCountersElement.cs
- OleDbPermission.cs
- Double.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- JoinSymbol.cs
- DataGridViewDataErrorEventArgs.cs
- StrongNameMembershipCondition.cs
- RequestDescription.cs
- CodeSubDirectory.cs
- WebPartMenuStyle.cs
- RoutedEventHandlerInfo.cs
- FontInfo.cs
- AttributeUsageAttribute.cs
- isolationinterop.cs
- SqlAliaser.cs
- IIS7WorkerRequest.cs
- PrintControllerWithStatusDialog.cs
- PinnedBufferMemoryStream.cs
- GorillaCodec.cs
- DecoderFallbackWithFailureFlag.cs
- DocumentViewerBase.cs
- XmlSchemaSimpleTypeRestriction.cs
- SQLMembershipProvider.cs
- ChildrenQuery.cs
- QilUnary.cs
- AccessorTable.cs
- HtmlCommandAdapter.cs
- TextParaLineResult.cs
- BatchParser.cs
- QueryStringParameter.cs
- Transform3D.cs
- StylusDownEventArgs.cs
- Matrix3D.cs
- RoleBoolean.cs
- SponsorHelper.cs
- HMACSHA256.cs
- DynamicResourceExtension.cs
- GlobalizationAssembly.cs
- StrongTypingException.cs
- SafeFileMappingHandle.cs
- RowBinding.cs
- RuntimeEnvironment.cs
- Transform.cs
- ObjectDataSourceSelectingEventArgs.cs
- BinaryUtilClasses.cs
- SingletonChannelAcceptor.cs
- SchemaMapping.cs
- SymDocumentType.cs
- APCustomTypeDescriptor.cs
- JsonObjectDataContract.cs
- EventLogPermission.cs