Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / Odbc / OdbcEnvironment.cs / 1305376 / OdbcEnvironment.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- using System; using System.Data; using System.Data.Common; using System.Threading; namespace System.Data.Odbc { sealed internal class OdbcEnvironment { static private object _globalEnvironmentHandle; static private object _globalEnvironmentHandleLock = new object(); private OdbcEnvironment () {} // default const. static internal OdbcEnvironmentHandle GetGlobalEnvironmentHandle() { OdbcEnvironmentHandle globalEnvironmentHandle = _globalEnvironmentHandle as OdbcEnvironmentHandle; if(null == globalEnvironmentHandle) { ADP.CheckVersionMDAC(true); lock(_globalEnvironmentHandleLock) { globalEnvironmentHandle = _globalEnvironmentHandle as OdbcEnvironmentHandle; if(null == globalEnvironmentHandle) { globalEnvironmentHandle = new OdbcEnvironmentHandle(); _globalEnvironmentHandle = globalEnvironmentHandle; } } } return globalEnvironmentHandle; } static internal void ReleaseObjectPool() { object globalEnvironmentHandle = Interlocked.Exchange(ref _globalEnvironmentHandle, null); if(null != globalEnvironmentHandle) { (globalEnvironmentHandle as OdbcEnvironmentHandle).Dispose(); // internally refcounted so will happen correctly } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- using System; using System.Data; using System.Data.Common; using System.Threading; namespace System.Data.Odbc { sealed internal class OdbcEnvironment { static private object _globalEnvironmentHandle; static private object _globalEnvironmentHandleLock = new object(); private OdbcEnvironment () {} // default const. static internal OdbcEnvironmentHandle GetGlobalEnvironmentHandle() { OdbcEnvironmentHandle globalEnvironmentHandle = _globalEnvironmentHandle as OdbcEnvironmentHandle; if(null == globalEnvironmentHandle) { ADP.CheckVersionMDAC(true); lock(_globalEnvironmentHandleLock) { globalEnvironmentHandle = _globalEnvironmentHandle as OdbcEnvironmentHandle; if(null == globalEnvironmentHandle) { globalEnvironmentHandle = new OdbcEnvironmentHandle(); _globalEnvironmentHandle = globalEnvironmentHandle; } } } return globalEnvironmentHandle; } static internal void ReleaseObjectPool() { object globalEnvironmentHandle = Interlocked.Exchange(ref _globalEnvironmentHandle, null); if(null != globalEnvironmentHandle) { (globalEnvironmentHandle as OdbcEnvironmentHandle).Dispose(); // internally refcounted so will happen correctly } } } } // 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
- Exceptions.cs
- CompatibleComparer.cs
- ItemAutomationPeer.cs
- CachedResourceDictionaryExtension.cs
- OleDbRowUpdatingEvent.cs
- HwndKeyboardInputProvider.cs
- HttpModuleActionCollection.cs
- TextEndOfSegment.cs
- AttachedAnnotationChangedEventArgs.cs
- ObjectCacheSettings.cs
- PreloadedPackages.cs
- ControllableStoryboardAction.cs
- VisualStyleElement.cs
- MenuItemBinding.cs
- StreamGeometry.cs
- XmlAttributes.cs
- FormViewCommandEventArgs.cs
- CssStyleCollection.cs
- XmlSchemaElement.cs
- ZoneLinkButton.cs
- ListView.cs
- TextRunTypographyProperties.cs
- EditorAttribute.cs
- AnnotationResourceChangedEventArgs.cs
- ThemeableAttribute.cs
- TableCell.cs
- PrinterUnitConvert.cs
- KeyValuePairs.cs
- ToolStripScrollButton.cs
- DocumentGridPage.cs
- XmlNodeReader.cs
- ToolStripRendererSwitcher.cs
- RectAnimationBase.cs
- ListBindableAttribute.cs
- QuaternionValueSerializer.cs
- Vector3D.cs
- DirectionalLight.cs
- TransactionScope.cs
- ClientSideProviderDescription.cs
- InvokeProviderWrapper.cs
- UserPrincipalNameElement.cs
- StrokeCollectionDefaultValueFactory.cs
- CompositeDuplexBindingElement.cs
- LinqDataSource.cs
- _SpnDictionary.cs
- LocatorBase.cs
- Keywords.cs
- TextBreakpoint.cs
- IndentedTextWriter.cs
- MultiTouchSystemGestureLogic.cs
- ValidatorCompatibilityHelper.cs
- DataGridViewCellValueEventArgs.cs
- FileSystemWatcher.cs
- LinkGrep.cs
- RuleSettings.cs
- StringSource.cs
- EpmSourceTree.cs
- EmptyEnumerable.cs
- SmuggledIUnknown.cs
- SymbolType.cs
- DragCompletedEventArgs.cs
- ExpressionWriter.cs
- SweepDirectionValidation.cs
- CryptoKeySecurity.cs
- TextDocumentView.cs
- CodeExporter.cs
- TargetInvocationException.cs
- TriggerActionCollection.cs
- Domain.cs
- HitTestParameters3D.cs
- ViewSimplifier.cs
- ReflectPropertyDescriptor.cs
- StringResourceManager.cs
- DynamicValidator.cs
- FormViewInsertEventArgs.cs
- ConditionalBranch.cs
- MemoryPressure.cs
- SafePipeHandle.cs
- ApplicationContext.cs
- OutOfProcStateClientManager.cs
- CacheHelper.cs
- EnumerationRangeValidationUtil.cs
- VirtualPathUtility.cs
- ImageMap.cs
- QueueProcessor.cs
- JulianCalendar.cs
- _StreamFramer.cs
- TypedRowHandler.cs
- StandardOleMarshalObject.cs
- figurelengthconverter.cs
- GuidTagList.cs
- EllipseGeometry.cs
- ManageRequest.cs
- ParentQuery.cs
- MenuAutomationPeer.cs
- XmlILAnnotation.cs
- TextSimpleMarkerProperties.cs
- StrongNameUtility.cs
- SchemaMerger.cs
- QilGenerator.cs