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
- XmlSerializerVersionAttribute.cs
- DetailsViewPageEventArgs.cs
- DataServiceResponse.cs
- Properties.cs
- FtpRequestCacheValidator.cs
- HwndKeyboardInputProvider.cs
- BindToObject.cs
- CollectionChangeEventArgs.cs
- SerializationHelper.cs
- TreeNodeEventArgs.cs
- ToolStripItemDesigner.cs
- Rect.cs
- UpdateRecord.cs
- WebControl.cs
- RectangleConverter.cs
- LineGeometry.cs
- SafeSerializationManager.cs
- DataGridViewSortCompareEventArgs.cs
- PersonalizationState.cs
- FontStyleConverter.cs
- ProxyWebPartManager.cs
- LabelAutomationPeer.cs
- ToolBarButtonClickEvent.cs
- Types.cs
- ChameleonKey.cs
- LayoutTable.cs
- ImageEditor.cs
- ProtocolViolationException.cs
- MetadataUtilsSmi.cs
- RuntimeWrappedException.cs
- ModuleConfigurationInfo.cs
- EnvironmentPermission.cs
- XmlSchemaAnyAttribute.cs
- ElementHostAutomationPeer.cs
- SmtpTransport.cs
- RegistryKey.cs
- PropertyTab.cs
- RectConverter.cs
- OSFeature.cs
- XPathNodeList.cs
- SortedList.cs
- TrackingLocation.cs
- MatrixCamera.cs
- SystemUnicastIPAddressInformation.cs
- SecurityStandardsManager.cs
- LinqDataView.cs
- ItemsControlAutomationPeer.cs
- FrameworkContextData.cs
- DataTablePropertyDescriptor.cs
- DrawingCollection.cs
- TargetConverter.cs
- UnsafeNativeMethods.cs
- ToolStripRenderEventArgs.cs
- ZipIOLocalFileDataDescriptor.cs
- KeyedHashAlgorithm.cs
- SelectedGridItemChangedEvent.cs
- PopupEventArgs.cs
- ConfigXmlElement.cs
- DataColumnMappingCollection.cs
- JulianCalendar.cs
- HMAC.cs
- ServiceBusyException.cs
- SoapBinding.cs
- BaseDataBoundControl.cs
- TextSearch.cs
- BinaryConverter.cs
- ItemsPresenter.cs
- ComponentEditorForm.cs
- ImpersonationContext.cs
- Accessors.cs
- HyperLinkDataBindingHandler.cs
- ApplicationSettingsBase.cs
- ChineseLunisolarCalendar.cs
- SimpleWebHandlerParser.cs
- SettingsProperty.cs
- BufferedGraphicsManager.cs
- XmlSchemaComplexContentRestriction.cs
- IPipelineRuntime.cs
- HtmlLabelAdapter.cs
- ConfigXmlWhitespace.cs
- Automation.cs
- XamlUtilities.cs
- GreenMethods.cs
- CurrencyWrapper.cs
- Predicate.cs
- WebMessageEncodingElement.cs
- XmlAttributeCache.cs
- SmiXetterAccessMap.cs
- ObjectStateFormatter.cs
- BamlTreeMap.cs
- VariableValue.cs
- EditorPartCollection.cs
- ServiceDescriptionReflector.cs
- StructuredTypeEmitter.cs
- Bold.cs
- ItemList.cs
- SrgsDocumentParser.cs
- GridViewColumn.cs
- XmlSchemaAnnotated.cs
- DiffuseMaterial.cs