Visual Studio で UWP アプリをデバッグするときに、中断、再開、およびバックグラウンド イベントをトリガーする

デバッグが行われていないときは、Windows の プロセス継続時間管理 (PLM) によってアプリの実行状態 (ユーザー アクションに応じたアプリの開始、中断、再開、および終了) とデバイスの状態が管理されます。 デバッグが行われているとき、これらのアクティブ化イベントは Windows によって無効にされます。 このトピックでは、デバッガーでこれらのイベントを発生させる方法について説明します。

このトピックでは、 バックグラウンド タスクをデバッグする方法についても説明します。 バックグラウンド タスクは、アプリが実行されていない場合でもバックグラウンド プロセスで特定の操作を行うことを可能にします。 デバッガーを使用してアプリをデバッグ モードに変更した後、UI の起動なしでバックグラウンド タスクを開始してデバッグできます。

プロセス継続時間管理とバックグラウンド タスクの詳細については、起動、再開、マルチタスク処理に関するページを参照してください。

プロセス継続時間管理イベントを発生させる

Windows では、ユーザーが他のアプリに切り替えた場合、または Windows が低電力状態に入った場合にアプリを中断できます。 Suspending イベントに応答して、関連するアプリとユーザー データを永続ストレージに保存し、リソースを解放できます。 中断 状態から再開されたアプリは 実行 状態に入り、中断状態に入った時点の状態から実行を続行します。 Resuming イベントに応答してアプリの状態を復元するか更新し、リソースを再要求できます。

Windows はできる限り多くの中断されたアプリをメモリに保持しようとしますが、十分なリソースが存在しない場合はアプリを終了できます。 ユーザーもアプリを明示的に閉じることができます。 ユーザーがアプリを閉じたことを示す特別なイベントはありません。

Visual Studio デバッガーでは、アプリを手動で中断、再開、および終了して、プロセスのライフサイクル イベントをデバッグできます。 プロセスのライフサイクル イベントをデバッグするには:

  1. デバッグするイベントのハンドラーの中にブレークポイントを設定します。

  2. F5 キーを押してデバッグを開始します。

  3. [デバッグの場所] ツール バーで、トリガーするイベントを選択します。

    Suspend, resume, terminate, and background tasks

    [Suspend and terminate]\(中断して終了\) を選択すると、アプリが閉じられ、デバッグ セッションは終了します。

バックグラウンド タスクをトリガーする

すべてのアプリは、アプリが実行されていない場合でも特定のシステム イベントに応答するためのバックグラウンド タスクを登録できます。 バックグラウンド タスクは、UI を直接更新するコードは実行できません。代わりに、タイルの更新、バッジの更新、およびトースト通知を使用して、ユーザーに情報を表示します。 詳細については、「バックグラウンド タスクによるアプリのサポート」を参照してください。

アプリのバックグラウンド タスクを開始するイベントをデバッガーからトリガーできます。

Note

デバッガーは、データを含まないイベント (デバイスの状態の変更を示すイベントなど) だけをトリガーできます。 ユーザー入力やその他のデータを必要とするバックグラウンド タスクは手動でトリガーする必要があります。

バックグラウンド タスク イベントをトリガーするための最も現実的な方法は、アプリが実行されていない時点です。 ただし、標準デバッグ セッション中のイベントのトリガーもサポートされています。

標準デバッグ セッションからバックグラウンド タスク イベントをトリガーする

  1. デバッグするバックグラウンド タスク コードの中にブレークポイントを設定します。

  2. F5 キーを押してデバッグを開始します。

  3. [デバッグの場所] ツール バーのイベントの一覧から、開始するバックグラウンド タスクを選択します。

    Suspend, resume, terminate, and background tasks

アプリが実行されていないときにバックグラウンド タスクをトリガーする

  1. デバッグするバックグラウンド タスク コードの中にブレークポイントを設定します。

  2. スタートアップ プロジェクトのデバッグ プロパティ ページを開きます。 ソリューション エクスプローラーで、プロジェクトを選択します。 [デバッグ] メニューの [プロパティ]をクリックします。

    C++ プロジェクトの場合は、[構成プロパティ] を展開して [デバッグ] を選択します。

  3. 次のいずれかを実行します。

    • Visual C# プロジェクトと Visual Basic プロジェクトの場合は、 [起動しないが、開始時にコードをデバッグ]をクリックします。

      C#/VB debug launch application property

    • C++ プロジェクトの場合は、[アプリケーションの起動] リストから [いいえ] を選択します。

      C++/VB Launch application debug property

  4. F5 キーを押して、アプリをデバッグ モードにします。 デバッグ モードであることを示すために、 [デバッグの場所] ツール バーの [プロセス] の一覧にアプリのパッケージ名が表示されます。

    Background task Process list

  5. [デバッグの場所] ツール バーのイベントの一覧から、開始するバックグラウンド タスクを選択します。

    Suspend, resume, terminate, and background tasks

インストール済みのアプリからプロセス継続時間管理イベントとバックグラウンド タスクをトリガーする

[インストールされているアプリ パッケージのデバッグ] ダイアログ ボックスを使用して、既にインストールされているアプリをデバッガーに読み込みます。 たとえば、Microsoft ストアからインストールされたアプリや、ソース ファイルはあっても Visual Studio プロジェクトがないアプリをデバッグできます。 [インストールされているアプリ パッケージのデバッグ] ダイアログ ボックスを使用すると、Visual Studio のコンピューターまたはリモート デバイスで、アプリをデバッグ モードで起動できます。また、アプリを起動せずにデバッグ モードで実行するように設定することもできます。 詳細については、次を参照してください。 インストールされているアプリ パッケージをデバッグします。

アプリをデバッガーに読み込んだら、前の各手順を使用できます。

バックグラウンド タスクのアクティブ化エラーの診断

バックグラウンド インフラストラクチャ用の Windows イベント ビューアーの診断ログには、バックグラウンド タスク エラーの診断とトラブルシューティングを行うために使用できる詳細情報が含まれています。 このログを表示するには:

  1. イベント ビューアー アプリケーションを開きます。

  2. 操作 ウィンドウで、 [表示] をクリックし、 [分析およびデバッグ ログの表示] がオンになっていることを確認します。

  3. [イベント ビューアー (ローカル)] ツリーで、ノード Applications and Services Logs>Microsoft>Windows>BackgroundTasksInfrastructure を展開します。

  4. 診断 ログを選択します。