Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / SynchronizedDisposablePool.cs / 1 / SynchronizedDisposablePool.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System.Collections.Generic; using System.Threading; class SynchronizedDisposablePoolwhere T : class, IDisposable { List items; int maxCount; bool disposed; public SynchronizedDisposablePool(int maxCount) { this.items = new List (); this.maxCount = maxCount; } object ThisLock { get { return this; } } public void Dispose() { T[] items; lock (ThisLock) { if (!disposed) { disposed = true; if (this.items.Count > 0) { items = new T[this.items.Count]; this.items.CopyTo(items, 0); this.items.Clear(); } else { items = null; } } else { items = null; } } if (items != null) { for (int i = 0; i < items.Length; i++) { items[i].Dispose(); } } } public bool Return(T value) { if (!disposed && this.items.Count < this.maxCount) { lock (ThisLock) { if (!disposed && this.items.Count < this.maxCount) { this.items.Add(value); return true; } } } return false; } public T Take() { if (!disposed && this.items.Count > 0) { lock (ThisLock) { if (!disposed && this.items.Count > 0) { int index = this.items.Count - 1; T item = this.items[index]; this.items.RemoveAt(index); return item; } } } return null; } } } // 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
- DataBinding.cs
- printdlgexmarshaler.cs
- dtdvalidator.cs
- ResourceDescriptionAttribute.cs
- FontDialog.cs
- CachedFontFamily.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- MenuTracker.cs
- Timeline.cs
- HtmlTableCell.cs
- XhtmlBasicControlAdapter.cs
- CalendarDay.cs
- ButtonPopupAdapter.cs
- TimeoutValidationAttribute.cs
- SymbolEqualComparer.cs
- QueryReaderSettings.cs
- ResourceSet.cs
- ToolboxComponentsCreatedEventArgs.cs
- DbConnectionPoolGroup.cs
- PersonalizationProvider.cs
- AppliesToBehaviorDecisionTable.cs
- DetailsViewInsertEventArgs.cs
- FontClient.cs
- PeerNameRecordCollection.cs
- EdmFunctionAttribute.cs
- WpfPayload.cs
- OracleConnection.cs
- DifferencingCollection.cs
- FilterException.cs
- NamespaceInfo.cs
- StateItem.cs
- DataGridViewBindingCompleteEventArgs.cs
- X509CertificateCollection.cs
- DataBindingExpressionBuilder.cs
- AppDomainProtocolHandler.cs
- _SSPIWrapper.cs
- MimeTypePropertyAttribute.cs
- PerfService.cs
- DataDocumentXPathNavigator.cs
- DbParameterHelper.cs
- CaseInsensitiveHashCodeProvider.cs
- TransformerInfo.cs
- GridViewPageEventArgs.cs
- ObfuscationAttribute.cs
- MarkupWriter.cs
- StrokeNodeOperations2.cs
- SqlEnums.cs
- LinkClickEvent.cs
- ToolboxItem.cs
- DataGridItem.cs
- WindowsFormsSectionHandler.cs
- Menu.cs
- ControlValuePropertyAttribute.cs
- DbConnectionPoolOptions.cs
- DBNull.cs
- StylusButton.cs
- tibetanshape.cs
- BindingParameterCollection.cs
- AssemblyResourceLoader.cs
- LinearKeyFrames.cs
- LeftCellWrapper.cs
- CommentAction.cs
- XmlQualifiedName.cs
- MasterPageCodeDomTreeGenerator.cs
- SystemIPGlobalProperties.cs
- CopyNamespacesAction.cs
- SessionParameter.cs
- XmlWhitespace.cs
- DynamicResourceExtension.cs
- ShutDownListener.cs
- RIPEMD160.cs
- OdbcConnectionPoolProviderInfo.cs
- ZipIOExtraFieldPaddingElement.cs
- BinarySerializer.cs
- BindableAttribute.cs
- PageContentAsyncResult.cs
- AlternateView.cs
- DbConnectionHelper.cs
- EditingMode.cs
- Logging.cs
- DataStorage.cs
- WebFormDesignerActionService.cs
- SqlServer2KCompatibilityCheck.cs
- WSSecurityPolicy11.cs
- HwndStylusInputProvider.cs
- ValidatorCompatibilityHelper.cs
- EventArgs.cs
- OleDbReferenceCollection.cs
- XmlNodeComparer.cs
- TdsParserStateObject.cs
- DBCSCodePageEncoding.cs
- WebPartEditorOkVerb.cs
- BulletedList.cs
- TextParaLineResult.cs
- ConnectionProviderAttribute.cs
- BackgroundFormatInfo.cs
- DataGridViewRowConverter.cs
- _KerberosClient.cs
- TokenBasedSetEnumerator.cs
- SafeSecurityHandles.cs