Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Runtime / Pool.cs / 1305376 / Pool.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Runtime { using System; using System.Runtime; // Pooldefined below is a LIFO pool of Pool.IClearable objects. // It is strongly typed to make the Acquire/Release methods more user // friendly. To use this pool, subclass it with a concrete type and // override the CreateNew method. Typically, the type of T will // have a default ctor and will use an Initialize(...) method in order // to configure it for use. // NOTE: CreateNew is required because T : new() requires that the default // ctor is public. We did not want to put public ctors on some of our // pooled resources (like NativeActivityContext). abstract class Pool { const int DefaultPoolSize = 10; T[] items; int count; int poolSize; public Pool() : this(DefaultPoolSize) { } public Pool(int poolSize) { this.items = new T[poolSize]; this.poolSize = poolSize; } public T Acquire() { if (this.count > 0) { this.count--; T item = this.items[this.count]; return item; } else { return CreateNew(); } } protected abstract T CreateNew(); public void Release(T item) { if (this.count < this.poolSize) { this.items[this.count] = item; this.count++; } } } } // 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
- RtfToken.cs
- HandleCollector.cs
- ToolZone.cs
- SamlAuthenticationClaimResource.cs
- SqlMultiplexer.cs
- AppDomainProtocolHandler.cs
- AtomEntry.cs
- ExpandedWrapper.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- ThumbButtonInfoCollection.cs
- FieldBuilder.cs
- RandomNumberGenerator.cs
- RemotingConfigParser.cs
- CalendarAutoFormat.cs
- DataTableMapping.cs
- ProcessHostMapPath.cs
- XmlUtil.cs
- UnsafeNativeMethods.cs
- XmlWriterTraceListener.cs
- ChangePasswordDesigner.cs
- ParserContext.cs
- RelOps.cs
- RegexWorker.cs
- ProcessRequestArgs.cs
- XmlSchemaIdentityConstraint.cs
- FileNotFoundException.cs
- DesignTimeParseData.cs
- WindowsTokenRoleProvider.cs
- SystemIPv4InterfaceProperties.cs
- MessageHeader.cs
- ExpressionHelper.cs
- ZipIOCentralDirectoryFileHeader.cs
- DesignerActionKeyboardBehavior.cs
- EntityDataSourceSelectingEventArgs.cs
- Floater.cs
- COM2ColorConverter.cs
- RegistryConfigurationProvider.cs
- D3DImage.cs
- PrintingPermissionAttribute.cs
- GatewayDefinition.cs
- InternalReceiveMessage.cs
- WebMessageEncoderFactory.cs
- IItemProperties.cs
- XmlResolver.cs
- NestedContainer.cs
- TextParaLineResult.cs
- DetailsViewDesigner.cs
- SchemaComplexType.cs
- IxmlLineInfo.cs
- CompilationLock.cs
- TimeSpanOrInfiniteValidator.cs
- ResourcePermissionBaseEntry.cs
- XsltLibrary.cs
- DataSourceXmlTextReader.cs
- HandledMouseEvent.cs
- WindowHideOrCloseTracker.cs
- XmlIgnoreAttribute.cs
- MachineKeySection.cs
- RIPEMD160Managed.cs
- ItemChangedEventArgs.cs
- Cursor.cs
- Rotation3D.cs
- Constant.cs
- KnownColorTable.cs
- DuplicateWaitObjectException.cs
- FontWeights.cs
- CircleHotSpot.cs
- PathFigureCollectionValueSerializer.cs
- UntrustedRecipientException.cs
- SubpageParaClient.cs
- X509Extension.cs
- WindowsGraphics2.cs
- SourceSwitch.cs
- DynamicUpdateCommand.cs
- WmfPlaceableFileHeader.cs
- ToolboxItemWrapper.cs
- HttpContext.cs
- StorageAssociationSetMapping.cs
- MultiPropertyDescriptorGridEntry.cs
- RelatedCurrencyManager.cs
- StringAnimationUsingKeyFrames.cs
- ProcessHost.cs
- safemediahandle.cs
- BamlStream.cs
- TextBoxAutoCompleteSourceConverter.cs
- CheckBoxList.cs
- TemplateComponentConnector.cs
- HighlightVisual.cs
- ProviderSettings.cs
- ObjectQuery.cs
- AxParameterData.cs
- ServiceRoute.cs
- SettingsPropertyValue.cs
- LineServices.cs
- ValueConversionAttribute.cs
- Decorator.cs
- VectorCollectionConverter.cs
- FacetValueContainer.cs
- WindowInteropHelper.cs
- DesignerHelpers.cs