Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / ExecutorLocksHeldException.cs / 1305376 / ExecutorLocksHeldException.cs
// **************************************************************************** // Copyright (C) 2000-2001 Microsoft Corporation. All rights reserved. // // CONTENTS // Workflow Base exception class // // DESCRIPTION // Base class for WINOE Runtime engine exception // // REVISIONS // Date Ver By Remarks // ~~~~~~~~~~ ~~~ ~~~~~~~~ ~~~~~~~~~~~~~~ // 03/08/01 1.0 [....] Created. // *************************************************************************** using System; using System.Runtime.Serialization; using System.Security.Permissions; using System.Collections.Generic; using System.Globalization; using System.Threading; using System.Workflow; using System.Workflow.Runtime; using System.Workflow.ComponentModel; namespace System.Workflow.Runtime { /* * The Unload() method has been changed so that * any Unload requests made while in the middle of an atomic * transaction wait for the atomic transaction to complete. * This makes use of an ManualResetEvent. Unload() waits on the event: * theEvent.WaitOne() * But waiting with the executor and scheduler locks held * will block everything else. * * The solution is to have a custom internal exception class that has the * ManualResetEvent as an internal property. If Unload() finds itself in the middle * of an atomic transaction, it throws the Exception. The Exception is propogated upwards * until we reach the method that was the first to grab the executor lock. * * We then drop that lock and wait on the event handle. As soon as the handle is * Set() by DisposeTransaction(), we grab the executor lock and do everything all over. */ internal class ExecutorLocksHeldException : Exception { private ManualResetEvent handle; public ExecutorLocksHeldException(ManualResetEvent handle) { this.handle = handle; } internal ManualResetEvent Handle { get { return handle; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. // **************************************************************************** // Copyright (C) 2000-2001 Microsoft Corporation. All rights reserved. // // CONTENTS // Workflow Base exception class // // DESCRIPTION // Base class for WINOE Runtime engine exception // // REVISIONS // Date Ver By Remarks // ~~~~~~~~~~ ~~~ ~~~~~~~~ ~~~~~~~~~~~~~~ // 03/08/01 1.0 [....] Created. // *************************************************************************** using System; using System.Runtime.Serialization; using System.Security.Permissions; using System.Collections.Generic; using System.Globalization; using System.Threading; using System.Workflow; using System.Workflow.Runtime; using System.Workflow.ComponentModel; namespace System.Workflow.Runtime { /* * The Unload() method has been changed so that * any Unload requests made while in the middle of an atomic * transaction wait for the atomic transaction to complete. * This makes use of an ManualResetEvent. Unload() waits on the event: * theEvent.WaitOne() * But waiting with the executor and scheduler locks held * will block everything else. * * The solution is to have a custom internal exception class that has the * ManualResetEvent as an internal property. If Unload() finds itself in the middle * of an atomic transaction, it throws the Exception. The Exception is propogated upwards * until we reach the method that was the first to grab the executor lock. * * We then drop that lock and wait on the event handle. As soon as the handle is * Set() by DisposeTransaction(), we grab the executor lock and do everything all over. */ internal class ExecutorLocksHeldException : Exception { private ManualResetEvent handle; public ExecutorLocksHeldException(ManualResetEvent handle) { this.handle = handle; } internal ManualResetEvent Handle { get { return handle; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ManipulationCompletedEventArgs.cs
- TypeSemantics.cs
- EventRoute.cs
- Point4DValueSerializer.cs
- COM2ExtendedUITypeEditor.cs
- CachedFontFace.cs
- BufferedGraphics.cs
- BaseProcessor.cs
- TimeSpanValidatorAttribute.cs
- InternalBufferOverflowException.cs
- CreateUserWizardAutoFormat.cs
- GiveFeedbackEvent.cs
- DbProviderFactoriesConfigurationHandler.cs
- Int64.cs
- SQLDateTimeStorage.cs
- RealProxy.cs
- ListItemsPage.cs
- TimeSpanOrInfiniteValidator.cs
- X509Certificate.cs
- recordstatescratchpad.cs
- dataSvcMapFileLoader.cs
- WmlFormAdapter.cs
- AlternateViewCollection.cs
- TemplatePartAttribute.cs
- ObjectStateManagerMetadata.cs
- MaskedTextProvider.cs
- StringCollection.cs
- XPathException.cs
- ThicknessAnimationUsingKeyFrames.cs
- StrongTypingException.cs
- CryptographicAttribute.cs
- SamlDoNotCacheCondition.cs
- SqlMultiplexer.cs
- XmlRootAttribute.cs
- DataGridViewSortCompareEventArgs.cs
- MergePropertyDescriptor.cs
- DecimalConverter.cs
- ValueType.cs
- SoundPlayerAction.cs
- OLEDB_Util.cs
- TargetInvocationException.cs
- VerticalAlignConverter.cs
- ComboBoxRenderer.cs
- Options.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- NullableFloatSumAggregationOperator.cs
- WebConfigurationHost.cs
- TransactedReceiveScope.cs
- InfoCardPolicy.cs
- AvTraceFormat.cs
- SpecialTypeDataContract.cs
- WebPartZoneCollection.cs
- FileLoadException.cs
- InputMethodStateTypeInfo.cs
- BuildTopDownAttribute.cs
- ApplicationDirectoryMembershipCondition.cs
- HuffCodec.cs
- Crc32.cs
- ComponentEditorPage.cs
- MatrixAnimationUsingKeyFrames.cs
- BamlLocalizabilityResolver.cs
- TextReader.cs
- DictionaryBase.cs
- TextTreeTextNode.cs
- ActivityInterfaces.cs
- TextElementEnumerator.cs
- HtmlString.cs
- SerializationStore.cs
- Input.cs
- TextProviderWrapper.cs
- NameNode.cs
- DispatcherProcessingDisabled.cs
- RtfToXamlLexer.cs
- TextParagraphProperties.cs
- _AuthenticationState.cs
- TextEditorCharacters.cs
- StatusBar.cs
- TextParaLineResult.cs
- _SecureChannel.cs
- Content.cs
- TdsParserStateObject.cs
- MultiBinding.cs
- WebBrowserDocumentCompletedEventHandler.cs
- LogEntryHeaderv1Deserializer.cs
- CollectionViewGroupInternal.cs
- DataDocumentXPathNavigator.cs
- BuilderPropertyEntry.cs
- CrossSiteScriptingValidation.cs
- StickyNoteAnnotations.cs
- CircleEase.cs
- RecordsAffectedEventArgs.cs
- FrameworkContextData.cs
- IListConverters.cs
- DynamicResourceExtension.cs
- CultureTableRecord.cs
- RequestUriProcessor.cs
- EntityDataSourceConfigureObjectContext.cs
- ObjectSet.cs
- TextBox.cs
- IndexerNameAttribute.cs