Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Utility / PerfService.cs / 1305600 / PerfService.cs
//---------------------------------------------------------------------------- //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: Implements the Service class for perf diagnostics //--------------------------------------------------------------------------- using System; using System.Text; using System.Windows; using System.Collections.Generic; using Microsoft.Win32; using MS.Internal.PresentationCore; using MS.Internal; using MS.Utility; using MS.Win32.PresentationCore; using System.Reflection; namespace MS.Utility { [FriendAccessAllowed] static internal class PerfService { // Box the long to avoid JIT private static DictionaryperfElementIds = new Dictionary (); /// /// Perfservice uses this property to uniquely identfy each element in the tree. /// this ID gets traced with ETW traces and gets mapped to the element in the tool /// value is valid only if the service is running /// internal static long GetPerfElementID2(object element, string extraData) { object eltId = null; int hash = element.GetHashCode(); lock (perfElementIds) { if (!perfElementIds.TryGetValue(hash, out eltId)) { eltId = SafeNativeMethods.GetNextPerfElementId(); perfElementIds.Add(hash, eltId); // If this is the first time we see this object emit some useful info about it. if (EventTrace.IsEnabled(EventTrace.Keyword.KeywordGeneral, EventTrace.Level.Verbose)) { Type type = element.GetType(); Assembly asm = type.Assembly; EventTrace.EventProvider.TraceEvent(EventTrace.Event.PerfElementIDAssignment, EventTrace.Keyword.KeywordGeneral, EventTrace.Level.Verbose, (long)eltId, type.FullName, extraData, GetPerfElementID2(asm, asm.FullName)); } } } return (long)eltId; } internal static long GetPerfElementID(object element) { return GetPerfElementID2(element, string.Empty); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: Implements the Service class for perf diagnostics //--------------------------------------------------------------------------- using System; using System.Text; using System.Windows; using System.Collections.Generic; using Microsoft.Win32; using MS.Internal.PresentationCore; using MS.Internal; using MS.Utility; using MS.Win32.PresentationCore; using System.Reflection; namespace MS.Utility { [FriendAccessAllowed] static internal class PerfService { // Box the long to avoid JIT private static DictionaryperfElementIds = new Dictionary (); /// /// Perfservice uses this property to uniquely identfy each element in the tree. /// this ID gets traced with ETW traces and gets mapped to the element in the tool /// value is valid only if the service is running /// internal static long GetPerfElementID2(object element, string extraData) { object eltId = null; int hash = element.GetHashCode(); lock (perfElementIds) { if (!perfElementIds.TryGetValue(hash, out eltId)) { eltId = SafeNativeMethods.GetNextPerfElementId(); perfElementIds.Add(hash, eltId); // If this is the first time we see this object emit some useful info about it. if (EventTrace.IsEnabled(EventTrace.Keyword.KeywordGeneral, EventTrace.Level.Verbose)) { Type type = element.GetType(); Assembly asm = type.Assembly; EventTrace.EventProvider.TraceEvent(EventTrace.Event.PerfElementIDAssignment, EventTrace.Keyword.KeywordGeneral, EventTrace.Level.Verbose, (long)eltId, type.FullName, extraData, GetPerfElementID2(asm, asm.FullName)); } } } return (long)eltId; } internal static long GetPerfElementID(object element) { return GetPerfElementID2(element, string.Empty); } } } // 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
- HiddenField.cs
- HighContrastHelper.cs
- OutputCacheProfileCollection.cs
- KeyValuePairs.cs
- EnumerableRowCollection.cs
- FullTrustAssemblyCollection.cs
- PriorityItem.cs
- Compilation.cs
- CompressionTracing.cs
- VirtualizingStackPanel.cs
- DateTimeConstantAttribute.cs
- SchemaUtility.cs
- SQLDoubleStorage.cs
- ObjectDisposedException.cs
- ConfigurationManagerHelperFactory.cs
- Rectangle.cs
- MulticastIPAddressInformationCollection.cs
- IFormattable.cs
- OdbcConnectionFactory.cs
- RenderData.cs
- TraceFilter.cs
- PropertyTab.cs
- Error.cs
- ProviderConnectionPointCollection.cs
- DrawingAttributesDefaultValueFactory.cs
- PerfService.cs
- WebConfigurationFileMap.cs
- FormViewUpdatedEventArgs.cs
- NetworkAddressChange.cs
- ProfileGroupSettings.cs
- AssemblyBuilder.cs
- Vector.cs
- TraceSection.cs
- SerialStream.cs
- ZipIOCentralDirectoryFileHeader.cs
- ExpressionBinding.cs
- XmlIterators.cs
- DateTimeOffsetConverter.cs
- securitymgrsite.cs
- TextElementEnumerator.cs
- PolicyManager.cs
- EventLog.cs
- PageSetupDialog.cs
- DoubleCollection.cs
- GridViewEditEventArgs.cs
- Utility.cs
- ComplexType.cs
- SoapReflectionImporter.cs
- UnsafeNativeMethods.cs
- ByteRangeDownloader.cs
- InlinedLocationReference.cs
- CounterCreationDataCollection.cs
- SettingsSavedEventArgs.cs
- ReflectionServiceProvider.cs
- DataExchangeServiceBinder.cs
- xsdvalidator.cs
- ListChunk.cs
- FormViewUpdateEventArgs.cs
- EntityCommandCompilationException.cs
- WindowsSpinner.cs
- Brush.cs
- CodeMemberProperty.cs
- NavigateEvent.cs
- DateTimeFormat.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- SymmetricKey.cs
- VSWCFServiceContractGenerator.cs
- MouseButtonEventArgs.cs
- MediaContextNotificationWindow.cs
- ObjectSecurityT.cs
- ConnectionPoint.cs
- Knowncolors.cs
- SecUtil.cs
- PathTooLongException.cs
- XmlDownloadManager.cs
- MeshGeometry3D.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- RequestNavigateEventArgs.cs
- ProviderSettings.cs
- Pens.cs
- UnsafeNativeMethods.cs
- PointCollectionValueSerializer.cs
- TextSchema.cs
- CustomLineCap.cs
- RepeatBehaviorConverter.cs
- LinearKeyFrames.cs
- RemoteCryptoTokenProvider.cs
- _Events.cs
- ListViewDataItem.cs
- Material.cs
- EUCJPEncoding.cs
- RayHitTestParameters.cs
- COM2IDispatchConverter.cs
- streamingZipPartStream.cs
- GifBitmapDecoder.cs
- ControlCachePolicy.cs
- DataGrid.cs
- PersonalizationStateInfoCollection.cs
- ButtonBaseAdapter.cs
- WhiteSpaceTrimStringConverter.cs