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
- StructuredTypeEmitter.cs
- DoubleLinkList.cs
- SystemInformation.cs
- ToolStripItemClickedEventArgs.cs
- ImageCreator.cs
- HttpRuntime.cs
- DictionarySectionHandler.cs
- ObjectQuery.cs
- SectionXmlInfo.cs
- TraceUtils.cs
- DesignerActionService.cs
- SizeIndependentAnimationStorage.cs
- Padding.cs
- RegistrationContext.cs
- PaperSource.cs
- EntityDataSourceReferenceGroup.cs
- ColumnResizeUndoUnit.cs
- TypeElement.cs
- HelpEvent.cs
- CryptoApi.cs
- ProxyWebPart.cs
- TypeInfo.cs
- JoinGraph.cs
- SocketException.cs
- FormViewAutoFormat.cs
- ProxyWebPart.cs
- safelinkcollection.cs
- XmlnsDefinitionAttribute.cs
- QueryPageSettingsEventArgs.cs
- IIS7WorkerRequest.cs
- HtmlElementEventArgs.cs
- VisualBasicSettingsConverter.cs
- ExpressionList.cs
- HtmlShim.cs
- ProfileSettings.cs
- KeySplineConverter.cs
- SimplePropertyEntry.cs
- MemberMaps.cs
- DataGridViewCellValidatingEventArgs.cs
- Privilege.cs
- SystemUdpStatistics.cs
- ExpressionsCollectionEditor.cs
- PublishLicense.cs
- RealizationContext.cs
- InitializingNewItemEventArgs.cs
- BaseDataList.cs
- SpeakInfo.cs
- StoreAnnotationsMap.cs
- MultiAsyncResult.cs
- XmlSchemaExporter.cs
- PkcsMisc.cs
- DetailsViewInsertedEventArgs.cs
- XmlSchemaValidationException.cs
- InstallerTypeAttribute.cs
- SqlParameterizer.cs
- TabControlEvent.cs
- InvalidTimeZoneException.cs
- DbMetaDataCollectionNames.cs
- PseudoWebRequest.cs
- JpegBitmapEncoder.cs
- OracleConnection.cs
- RMPublishingDialog.cs
- EventToken.cs
- EventLogPermission.cs
- WebResourceAttribute.cs
- CodeConditionStatement.cs
- X509CertificateInitiatorServiceCredential.cs
- Rectangle.cs
- StoragePropertyMapping.cs
- Timer.cs
- PackUriHelper.cs
- WindowsTreeView.cs
- DynamicEntity.cs
- ListenerConnectionModeReader.cs
- SqlRewriteScalarSubqueries.cs
- BindingCompleteEventArgs.cs
- StaticFileHandler.cs
- Evaluator.cs
- GridProviderWrapper.cs
- OnOperation.cs
- DataGridViewAutoSizeModeEventArgs.cs
- XappLauncher.cs
- GridView.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- AnnotationResourceChangedEventArgs.cs
- AbsoluteQuery.cs
- Variant.cs
- TableLayout.cs
- WindowsMenu.cs
- InvokeHandlers.cs
- ListViewGroupCollectionEditor.cs
- embossbitmapeffect.cs
- XmlSchemaAttribute.cs
- PropertyPathWorker.cs
- UrlPath.cs
- ResolveDuplexAsyncResult.cs
- TypeBuilder.cs
- Pair.cs
- RoutedEventConverter.cs
- SettingsPropertyNotFoundException.cs