示例#1
0
        /// <summary>
        /// Invoked when the application is launched normally by the end user.  Other entry points
        /// will be used such as when the application is launched to open a specific file.
        /// </summary>
        /// <param name="e">Details about the launch request and process.</param>
        protected override async void OnLaunched(LaunchActivatedEventArgs e)
        {
            _logger.LogInformation("=== Start Application ===");

            _settingsService.SetProgramLanguage(null);

            SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;

            var rootFrame = Window.Current.Content as Frame;

            // Do not repeat app initialization when the Window already has content,
            // just ensure that the window is active
            if (rootFrame == null)
            {
                // Create a Frame to act as the navigation context and navigate to the first page
                rootFrame = new Frame();

                rootFrame.NavigationFailed += OnNavigationFailed;

                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    // TODO: Load state from previously suspended application
                }

                // Place the frame in the current Window
                Window.Current.Content = rootFrame;
            }

            if (e.PrelaunchActivated == false)
            {
                if (rootFrame.Content == null)
                {
                    // When the navigation stack isn't restored navigate to the first page,
                    // configuring the new page by passing required information as a navigation
                    // parameter
                    rootFrame.Navigate(typeof(MainPage), e.Arguments);
                }

                // Ensure the current window is active
                Window.Current.Activate();

                Settings settings = _settingsService.Load();

                if (settings.StartAppMinimized.HasValue && settings.StartAppMinimized.Value)
                {
                    IList <AppDiagnosticInfo> infos = await AppDiagnosticInfo.RequestInfoForAppAsync();

                    AppDiagnosticInfo appDiagnosticInfo = infos.FirstOrDefault();

                    if (appDiagnosticInfo != null)
                    {
                        IList <AppResourceGroupInfo> resourceInfos = appDiagnosticInfo.GetResourceGroups();
                        await resourceInfos[0].StartSuspendAsync();
                    }
                }
            }
        }
示例#2
0
        public async static void Update()
        {
            if (processes != null)
            {
                foreach (ProcessDiagnosticInfo process in processes)
                {
                    string exeName = process.ExecutableFileName;
                    string pid     = process.ProcessId.ToString();

                    ProcessCpuUsageReport cpuReport = process.CpuUsage.GetReport();
                    TimeSpan userCpu   = cpuReport.UserTime;
                    TimeSpan kernelCpu = cpuReport.KernelTime;

                    ProcessMemoryUsageReport memReport = process.MemoryUsage.GetReport();
                    ulong npp     = memReport.NonPagedPoolSizeInBytes;
                    ulong pp      = memReport.PagedPoolSizeInBytes;
                    ulong peakNpp = memReport.PeakNonPagedPoolSizeInBytes;
                    //...etc

                    ProcessDiskUsageReport diskReport = process.DiskUsage.GetReport();
                    long bytesRead    = diskReport.BytesReadCount;
                    long bytesWritten = diskReport.BytesWrittenCount;
                    //...etc
                    if (process.IsPackaged)
                    {
                        IList <AppDiagnosticInfo> diagnosticInfos = process.GetAppDiagnosticInfos();
                        if (diagnosticInfos != null && diagnosticInfos.Count > 0)
                        {
                            AppDiagnosticInfo diagnosticInfo = diagnosticInfos.FirstOrDefault();
                            if (diagnosticInfo != null)
                            {
                                IList <AppResourceGroupInfo> groups = diagnosticInfo.GetResourceGroups();
                                if (groups != null && groups.Count > 0)
                                {
                                    AppResourceGroupInfo group = groups.FirstOrDefault();
                                    if (group != null)
                                    {
                                        string      name        = diagnosticInfo.AppInfo.DisplayInfo.DisplayName;
                                        string      description = diagnosticInfo.AppInfo.DisplayInfo.Description;
                                        BitmapImage bitmapImage = await GetLogoAsync(diagnosticInfo);

                                        AppResourceGroupStateReport stateReport = group.GetStateReport();
                                        if (stateReport != null)
                                        {
                                            string executionStatus = stateReport.ExecutionState.ToString();
                                            string energyStatus    = stateReport.EnergyQuotaState.ToString();
                                        }

                                        AppResourceGroupMemoryReport memoryReport = group.GetMemoryReport();
                                        if (memoryReport != null)
                                        {
                                            AppMemoryUsageLevel level = memoryReport.CommitUsageLevel;
                                            ulong limit         = memoryReport.CommitUsageLimit;
                                            ulong totalCommit   = memoryReport.TotalCommitUsage;
                                            ulong privateCommit = memoryReport.PrivateCommitUsage;
                                            ulong sharedCommit  = totalCommit - privateCommit;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }