/// <summary> /// Starts useful services that run in the background to assist in various operations. /// </summary> private void StartBackgroundServices() { SnapshotPrefilterFactory.GetSnapshotPrefilter(typeof(ChunkLinkedListPrefilter)).BeginPrefilter(); //// PointerCollector.GetInstance().Begin(); DotNetObjectCollector.GetInstance().Begin(); AddressResolver.GetInstance().Begin(); OutputViewModel.GetInstance().Log(OutputViewModel.LogLevel.Info, "Background Services Started"); }
/// <summary> /// Starts useful services that run in the background to assist in various operations. /// </summary> private void StartBackgroundServices() { DotNetObjectCollector.GetInstance().Start(); AddressResolver.GetInstance().Start(); AnalyticsService.GetInstance().Start(); AnalyticsService.GetInstance().SendEvent(AnalyticsService.AnalyticsAction.General, "Start"); OutputViewModel.GetInstance().Log(OutputViewModel.LogLevel.Info, "Background services started"); }
/// <summary> /// Refreshes the list of active .Net objects based on gathered managed heap data. /// </summary> private void RefreshObjects() { IEnumerable <DotNetObject> dotNetObjects = DotNetObjectCollector.GetInstance().ObjectTrees; if (dotNetObjects == null) { dotNetObjects = new List <DotNetObject>(); } this.DotNetObjects = new ReadOnlyCollection <DotNetObjectViewModel>(dotNetObjects.Select(x => new DotNetObjectViewModel(x)).ToList()); }
/// <summary> /// Polls the external process, gathering object information from the managed heap. /// </summary> protected override void OnUpdate() { Dictionary <String, DotNetObject> nameMap = new Dictionary <String, DotNetObject>(); List <DotNetObject> objectTrees = DotNetObjectCollector.GetInstance().ObjectTrees; // Build .NET object list objectTrees?.ForEach(x => this.BuildNameMap(nameMap, x)); this.DotNetNameMap = nameMap; // After we have successfully grabbed information from the process, slow the update interval if (objectTrees != null) { this.UpdateInterval = AddressResolver.ResolveInterval; } }