Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Metadata / ObjectLayer / LockedAssemblyCache.cs / 1305376 / LockedAssemblyCache.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Threading; namespace System.Data.Metadata.Edm { internal class LockedAssemblyCache : IDisposable { private object _lockObject; private Dictionary_globalAssemblyCache; internal LockedAssemblyCache(object lockObject, Dictionary globalAssemblyCache) { _lockObject = lockObject; _globalAssemblyCache = globalAssemblyCache; #pragma warning disable 0618 //@ Monitor.Enter(_lockObject); #pragma warning restore 0618 } public void Dispose() { // Technically, calling GC.SuppressFinalize is not required because the class does not // have a finalizer, but it does no harm, protects against the case where a finalizer is added // in the future, and prevents an FxCop warning. GC.SuppressFinalize(this); Monitor.Exit(_lockObject); _lockObject = null; _globalAssemblyCache = null; } [Conditional("DEBUG")] private void AssertLockedByThisThread() { bool entered = false; Monitor.TryEnter(_lockObject, ref entered); if (entered) { Monitor.Exit(_lockObject); } Debug.Assert(entered, "The cache is being accessed by a thread that isn't holding the lock"); } internal bool TryGetValue(Assembly assembly, out ImmutableAssemblyCacheEntry cacheEntry) { AssertLockedByThisThread(); return _globalAssemblyCache.TryGetValue(assembly, out cacheEntry); } internal void Add(Assembly assembly, ImmutableAssemblyCacheEntry assemblyCacheEntry) { AssertLockedByThisThread(); _globalAssemblyCache.Add(assembly, assemblyCacheEntry); } internal void Clear() { AssertLockedByThisThread(); _globalAssemblyCache.Clear(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Threading; namespace System.Data.Metadata.Edm { internal class LockedAssemblyCache : IDisposable { private object _lockObject; private Dictionary_globalAssemblyCache; internal LockedAssemblyCache(object lockObject, Dictionary globalAssemblyCache) { _lockObject = lockObject; _globalAssemblyCache = globalAssemblyCache; #pragma warning disable 0618 //@ Monitor.Enter(_lockObject); #pragma warning restore 0618 } public void Dispose() { // Technically, calling GC.SuppressFinalize is not required because the class does not // have a finalizer, but it does no harm, protects against the case where a finalizer is added // in the future, and prevents an FxCop warning. GC.SuppressFinalize(this); Monitor.Exit(_lockObject); _lockObject = null; _globalAssemblyCache = null; } [Conditional("DEBUG")] private void AssertLockedByThisThread() { bool entered = false; Monitor.TryEnter(_lockObject, ref entered); if (entered) { Monitor.Exit(_lockObject); } Debug.Assert(entered, "The cache is being accessed by a thread that isn't holding the lock"); } internal bool TryGetValue(Assembly assembly, out ImmutableAssemblyCacheEntry cacheEntry) { AssertLockedByThisThread(); return _globalAssemblyCache.TryGetValue(assembly, out cacheEntry); } internal void Add(Assembly assembly, ImmutableAssemblyCacheEntry assemblyCacheEntry) { AssertLockedByThisThread(); _globalAssemblyCache.Add(assembly, assemblyCacheEntry); } internal void Clear() { AssertLockedByThisThread(); _globalAssemblyCache.Clear(); } } } // 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
- ColorConverter.cs
- MsmqHostedTransportManager.cs
- AssemblyHash.cs
- StrokeCollectionConverter.cs
- FormView.cs
- GacUtil.cs
- TriggerAction.cs
- GeneralTransformGroup.cs
- RawAppCommandInputReport.cs
- ConfigXmlElement.cs
- TextServicesHost.cs
- ManipulationInertiaStartingEventArgs.cs
- InheritanceRules.cs
- SpnEndpointIdentityExtension.cs
- PixelFormats.cs
- RelatedView.cs
- XPathDocument.cs
- XPathDocumentIterator.cs
- RowBinding.cs
- TableLayoutCellPaintEventArgs.cs
- ISAPIWorkerRequest.cs
- EndpointBehaviorElement.cs
- DiscoveryEndpoint.cs
- InputBinding.cs
- DataGridView.cs
- DataTableCollection.cs
- IPEndPoint.cs
- ObjectDataSourceMethodEventArgs.cs
- Rethrow.cs
- ValueQuery.cs
- ISCIIEncoding.cs
- SrgsGrammarCompiler.cs
- indexingfiltermarshaler.cs
- DesignerWidgets.cs
- TreeBuilderXamlTranslator.cs
- TrackBarRenderer.cs
- FlowDocumentPaginator.cs
- RSACryptoServiceProvider.cs
- IResourceProvider.cs
- MembershipPasswordException.cs
- MarkupWriter.cs
- SizeAnimationUsingKeyFrames.cs
- ProcessModelInfo.cs
- MetabaseServerConfig.cs
- XmlSiteMapProvider.cs
- SoapTransportImporter.cs
- XmlElementCollection.cs
- HttpRequest.cs
- ToolStripContentPanelRenderEventArgs.cs
- MetadataPropertyvalue.cs
- ChangeToolStripParentVerb.cs
- AnnotationHelper.cs
- NullableConverter.cs
- Polygon.cs
- PrintPreviewControl.cs
- RTLAwareMessageBox.cs
- SiteMap.cs
- Condition.cs
- UnsafeNativeMethods.cs
- IIS7WorkerRequest.cs
- XmlSerializationWriter.cs
- CommandConverter.cs
- TemplateInstanceAttribute.cs
- GeometryDrawing.cs
- XmlSchemaSequence.cs
- LayoutTable.cs
- OpenTypeCommon.cs
- WebPartPersonalization.cs
- BlurEffect.cs
- NumberSubstitution.cs
- GridViewDesigner.cs
- DataListComponentEditor.cs
- FilteredDataSetHelper.cs
- KeyPressEvent.cs
- RegexBoyerMoore.cs
- OleDbErrorCollection.cs
- RsaSecurityTokenParameters.cs
- ScriptIgnoreAttribute.cs
- _BaseOverlappedAsyncResult.cs
- XmlDeclaration.cs
- GestureRecognitionResult.cs
- TextUtf8RawTextWriter.cs
- ResourceBinder.cs
- Activator.cs
- ResourceWriter.cs
- EntityContainerAssociationSetEnd.cs
- safesecurityhelperavalon.cs
- NotFiniteNumberException.cs
- ButtonBase.cs
- AnnotationComponentManager.cs
- MessagingDescriptionAttribute.cs
- ConnectionPoint.cs
- FamilyTypefaceCollection.cs
- TableCellCollection.cs
- CloudCollection.cs
- JsonQueryStringConverter.cs
- IndexerHelper.cs
- ProcessHostFactoryHelper.cs
- EntityDataSourceColumn.cs
- XmlWrappingReader.cs