示例#1
0
 public async Task LaunchAppAsync(HoloLensApplication app)
 {
     foreach (var holoLens in ManagedHoloLens)
     {
         await holoLens.LaunchAppAsync(app);
     }
 }
示例#2
0
        public async Task LaunchAppAsync(HoloLensApplication app)
        {
            if (_devicePortal == null || !IsConnected)
            {
                Message = "Launch app failed.";
                return;
            }

            // 実行中のプロセスのリストを取得
            var processes = await _devicePortal.GetRunningProcessesAsync();

            // ターゲットのアプリを起動
            await _devicePortal.LaunchApplicationAsync(app.AppId, app.PackageName);

            var targetProcesses = processes.Processes
                                  // 間違って自分自身を殺さないようにフィルタ
                                  .Where(x => x.PackageFullName != app.PackageName)
                                  // 終了してはいけないプロセスを除外
                                  .Where(x => !DoNotCloseApps.Contains(x.Name, StringComparer.OrdinalIgnoreCase))
                                  // 空のものは除外
                                  .Where(x => !string.IsNullOrWhiteSpace(x.PackageFullName));

            // 順次他のプロセスを終了していく
            foreach (var process in targetProcesses)
            {
                try
                {
                    await _devicePortal.TerminateApplicationAsync(process.PackageFullName);
                }
                catch (Exception ex)
                {
                    Message = $"{process.AppName} の停止に失敗しました。";
                    Debug.WriteLine(ex);
                }
            }
        }