internal async Task Initialize()
        {
            var loadProcessTask     = ProcessListViewModel?.LoadProcessesAsync();
            var refreshInstanceTask = Task.Run(() => PerformanceCounterUtil.RefreshInstances());

            await Task.WhenAll(loadProcessTask, refreshInstanceTask);
        }
        private async Task RefreshProcessListAsync(bool keepSelectedProcess)
        {
            if (ProcessListViewModel?.Processes == null)
            {
                return;
            }

            ProcessListViewModel.PerformanceCounterViewModel?.Dispose();

            var selectedProcess     = ProcessListViewModel.SelectedProcess;
            var filter              = ProcessListViewModel.CollectionView?.Filter;
            var loadProcessTask     = ProcessListViewModel?.LoadProcessesAsync();
            var refreshInstanceTask = Task.Run(() => PerformanceCounterUtil.RefreshInstances());

            await loadProcessTask;

            if (filter != null)
            {
                ProcessListViewModel.CollectionView.Filter = filter;
            }
            if (keepSelectedProcess)
            {
                ProcessListViewModel.Select(selectedProcess?.ProcessId);
            }
            await refreshInstanceTask;
        }