Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / SafeMILHandleMemoryPressure.cs / 1407647 / SafeMILHandleMemoryPressure.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: // Tracks the amount of native memory used by SafeMILHandle objects. //--------------------------------------------------------------------------- using System; using System.Security; using MS.Internal; using System.Threading; namespace System.Windows.Media { internal class SafeMILHandleMemoryPressure { ////// Critical: This code calls into AddMemoryPressure which has a link demand. /// [SecurityCritical] internal SafeMILHandleMemoryPressure(long gcPressure) { _gcPressure = gcPressure; _refCount = 0; if (_gcPressure > SMALL_BITMAP_MEM) { MemoryPressure.Add(_gcPressure); } else { GC.AddMemoryPressure(_gcPressure); } } internal void AddRef() { Interlocked.Increment(ref _refCount); } ////// Critical: This code calls into RemoveMemoryPressure which has a link demand. /// [SecurityCritical] internal void Release() { if (Interlocked.Decrement(ref _refCount) == 0) { if (_gcPressure > SMALL_BITMAP_MEM) { MemoryPressure.Remove(_gcPressure); } else { GC.RemoveMemoryPressure(_gcPressure); } _gcPressure = 0; } } // Estimated size in bytes of the unmanaged memory private long _gcPressure; // // SafeMILHandleMemoryPressure does its own ref counting in managed code, because the // associated memory pressure should be removed when there are no more managed // references to the unmanaged resource. There can still be references to it from // unmanaged code elsewhere, but that should not prevent the memory pressure from being // released. // private int _refCount; // // The memory usage for a "small" bitmap // // Small bitmaps will be handled by GC.AddMemoryPressure() rather than WPF's own // MemoryPressure algorithm. GC's algorithm is less aggressive than WPF's, and will // result in fewer expensive GC.Collect(2) operations. // // For now, a small bitmap is 32x32 or less. It's at 4 bytes per pixel, and the *2 is // to account for the doubled estimate in // BitmapSourceMILSafeHandle.ComputeEstimatedSize(). // private const long SMALL_BITMAP_MEM = 32 * 32 * 4 * 2; } } // 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
- HelpKeywordAttribute.cs
- WebEventTraceProvider.cs
- AllMembershipCondition.cs
- TraceSource.cs
- XmlSchemaGroupRef.cs
- DataGridCell.cs
- DocComment.cs
- XmlBinaryReader.cs
- KeyboardDevice.cs
- ParallelLoopState.cs
- PolygonHotSpot.cs
- _UriSyntax.cs
- FlowThrottle.cs
- DSASignatureFormatter.cs
- ProfilePropertySettings.cs
- AsyncParams.cs
- ArgumentValidation.cs
- ObjectPropertyMapping.cs
- Timer.cs
- ThaiBuddhistCalendar.cs
- TextCharacters.cs
- CachedTypeface.cs
- AtomParser.cs
- ListViewAutomationPeer.cs
- DetailsViewRowCollection.cs
- InputReferenceExpression.cs
- CustomErrorCollection.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- SponsorHelper.cs
- HierarchicalDataBoundControl.cs
- UserThread.cs
- VariableExpressionConverter.cs
- OLEDB_Enum.cs
- PassportIdentity.cs
- SmiRecordBuffer.cs
- IDReferencePropertyAttribute.cs
- ControlBuilder.cs
- SqlRowUpdatingEvent.cs
- EntityDataSourceSelectingEventArgs.cs
- util.cs
- ValidatedControlConverter.cs
- DeobfuscatingStream.cs
- EventData.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- ServicePointManagerElement.cs
- TextComposition.cs
- HttpModuleActionCollection.cs
- ObjectView.cs
- CachedCompositeFamily.cs
- TextDecorations.cs
- View.cs
- CharacterBuffer.cs
- MetafileHeaderWmf.cs
- BookmarkEventArgs.cs
- GridViewRowCollection.cs
- GlobalizationAssembly.cs
- Validator.cs
- WorkflowViewStateService.cs
- LinqExpressionNormalizer.cs
- WorkflowItemPresenter.cs
- BitStack.cs
- CharEnumerator.cs
- AppDomainShutdownMonitor.cs
- BindingBase.cs
- CodeEventReferenceExpression.cs
- SqlUdtInfo.cs
- TextDocumentView.cs
- TypeGeneratedEventArgs.cs
- DirtyTextRange.cs
- LabelLiteral.cs
- DataControlHelper.cs
- DataBoundControl.cs
- GridViewUpdateEventArgs.cs
- Module.cs
- Formatter.cs
- PropertyInformationCollection.cs
- GlobalEventManager.cs
- FunctionUpdateCommand.cs
- CursorConverter.cs
- Directory.cs
- ElementNotAvailableException.cs
- FixedSOMContainer.cs
- ProcessingInstructionAction.cs
- OneOfTypeConst.cs
- COM2ExtendedBrowsingHandler.cs
- MediaScriptCommandRoutedEventArgs.cs
- AutoGeneratedField.cs
- MatrixTransform.cs
- HotSpot.cs
- StringToken.cs
- TrackingServices.cs
- StringValueSerializer.cs
- RuntimeResourceSet.cs
- TextViewBase.cs
- ProxyDataContractResolver.cs
- AssociatedControlConverter.cs
- ModelChangedEventArgsImpl.cs
- TableCell.cs
- StorageMappingFragment.cs
- ScriptComponentDescriptor.cs