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
- GroupBox.cs
- DirectionalLight.cs
- ValidationResults.cs
- AmbientValueAttribute.cs
- TakeQueryOptionExpression.cs
- MultipleViewPattern.cs
- NativeMethods.cs
- XmlBoundElement.cs
- FileUpload.cs
- ScalarType.cs
- RegexInterpreter.cs
- OracleInternalConnection.cs
- SQLString.cs
- MimeTypeAttribute.cs
- XmlWrappingReader.cs
- AnimationTimeline.cs
- ExecutedRoutedEventArgs.cs
- RegistrySecurity.cs
- XmlParserContext.cs
- EditingCoordinator.cs
- BindStream.cs
- UnsafeNativeMethods.cs
- NetTcpSecurityElement.cs
- ResolvePPIDRequest.cs
- SqlGenericUtil.cs
- Recipient.cs
- AutomationPatternInfo.cs
- DependencyObjectPropertyDescriptor.cs
- TaskExceptionHolder.cs
- SemanticResolver.cs
- TabRenderer.cs
- WindowsPen.cs
- GenerateTemporaryTargetAssembly.cs
- TheQuery.cs
- ColumnHeaderConverter.cs
- MethodBody.cs
- Int32KeyFrameCollection.cs
- ViewUtilities.cs
- XmlQualifiedNameTest.cs
- SqlTypeSystemProvider.cs
- FormCollection.cs
- XamlVector3DCollectionSerializer.cs
- WebPartConnectionsDisconnectVerb.cs
- ProfileService.cs
- StructuralObject.cs
- RC2CryptoServiceProvider.cs
- Utils.cs
- BitmapCodecInfo.cs
- CheckPair.cs
- SchemaTableColumn.cs
- HtmlInputText.cs
- datacache.cs
- ValidatorCompatibilityHelper.cs
- RepeaterDataBoundAdapter.cs
- SchemaManager.cs
- CompilerLocalReference.cs
- SymbolEqualComparer.cs
- CompositeClientFormatter.cs
- ISAPIRuntime.cs
- LeafCellTreeNode.cs
- ViewStateChangedEventArgs.cs
- TypeResolver.cs
- PrimitiveOperationFormatter.cs
- FileDialogCustomPlaces.cs
- XPathSelfQuery.cs
- LineVisual.cs
- ConfigurationManagerInternalFactory.cs
- DataTableReaderListener.cs
- SystemUdpStatistics.cs
- returneventsaver.cs
- HashCodeCombiner.cs
- ToolStripItemCollection.cs
- ObjectStorage.cs
- MobileUITypeEditor.cs
- FormsAuthenticationModule.cs
- processwaithandle.cs
- OptimizerPatterns.cs
- SchemaMapping.cs
- ValidationError.cs
- ObjectSecurity.cs
- InputLanguageCollection.cs
- EventListenerClientSide.cs
- HtmlGenericControl.cs
- XPathDescendantIterator.cs
- SqlSelectStatement.cs
- TouchPoint.cs
- DataGridViewCellValidatingEventArgs.cs
- InstanceContext.cs
- EventHandlingScope.cs
- DataBoundControlHelper.cs
- UnsafeNativeMethods.cs
- PopOutPanel.cs
- XmlSchemaAppInfo.cs
- TemplateControl.cs
- ElapsedEventArgs.cs
- AnimationStorage.cs
- LinearQuaternionKeyFrame.cs
- RightNameExpirationInfoPair.cs
- WebEventCodes.cs
- KeyProperty.cs