Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Data / System / Data / Odbc / OdbcEnvironment.cs / 1 / 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
- Misc.cs
- EdmItemError.cs
- MetadataProperty.cs
- _SslState.cs
- RunClient.cs
- KeyFrames.cs
- CompiledRegexRunnerFactory.cs
- ListViewItemMouseHoverEvent.cs
- RequiredAttributeAttribute.cs
- RootBrowserWindowAutomationPeer.cs
- BooleanSwitch.cs
- SessionSymmetricMessageSecurityProtocolFactory.cs
- ThemeDictionaryExtension.cs
- AnonymousIdentificationSection.cs
- CqlGenerator.cs
- Psha1DerivedKeyGenerator.cs
- AccessedThroughPropertyAttribute.cs
- XmlEncodedRawTextWriter.cs
- AppDomainUnloadedException.cs
- DescendentsWalkerBase.cs
- HttpContextServiceHost.cs
- OracleEncoding.cs
- TextView.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- EventBuilder.cs
- NativeMethods.cs
- SchemaInfo.cs
- HttpServerChannel.cs
- HostExecutionContextManager.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- JoinCqlBlock.cs
- SqlInfoMessageEvent.cs
- DPCustomTypeDescriptor.cs
- CompoundFileIOPermission.cs
- HttpWebRequestElement.cs
- PrivilegedConfigurationManager.cs
- EntityContainerEntitySet.cs
- ContextMenuStripGroup.cs
- IPHostEntry.cs
- UIHelper.cs
- Light.cs
- LinqExpressionNormalizer.cs
- StrongTypingException.cs
- PropertyMetadata.cs
- COM2PictureConverter.cs
- ManipulationPivot.cs
- XPathDocument.cs
- TypeElement.cs
- GridEntryCollection.cs
- SafeLocalAllocation.cs
- ListViewGroup.cs
- ObjectTag.cs
- WorkflowValidationFailedException.cs
- UnicastIPAddressInformationCollection.cs
- CellPartitioner.cs
- DockProviderWrapper.cs
- BufferModesCollection.cs
- DragAssistanceManager.cs
- FileDialog.cs
- isolationinterop.cs
- RangeValueProviderWrapper.cs
- DeobfuscatingStream.cs
- RowCache.cs
- ColumnCollectionEditor.cs
- TextEvent.cs
- AnnotationStore.cs
- Util.cs
- ArglessEventHandlerProxy.cs
- InheritablePropertyChangeInfo.cs
- ReflectionTypeLoadException.cs
- BitVector32.cs
- columnmapkeybuilder.cs
- MsmqUri.cs
- WindowsListViewItemCheckBox.cs
- QilScopedVisitor.cs
- fixedPageContentExtractor.cs
- columnmapkeybuilder.cs
- SQLMoney.cs
- TraceHandlerErrorFormatter.cs
- OleDbConnection.cs
- UnsafeNativeMethods.cs
- SrgsRule.cs
- BinaryFormatterWriter.cs
- SettingsAttributes.cs
- TextEditorTables.cs
- COM2PictureConverter.cs
- CompositionTarget.cs
- SessionPageStatePersister.cs
- ChunkedMemoryStream.cs
- WebSysDescriptionAttribute.cs
- AutoGeneratedFieldProperties.cs
- DragCompletedEventArgs.cs
- CfgSemanticTag.cs
- DesignDataSource.cs
- EventData.cs
- FramingChannels.cs
- SessionEndingCancelEventArgs.cs
- FlowDocumentPaginator.cs
- ButtonBaseDesigner.cs
- DependencyStoreSurrogate.cs