スレッド化と非同期プログラミングThreading and async programming

スレッド化と非同期プログラミングによって、アプリは並列スレッドで作業を非同期的に実行できます。Threading and async programming enables your app to accomplish work asynchronously in parallel threads.

アプリでは、スレッド プールを使って、並列スレッドで作業を非同期的に実行できます。Your app can use the thread pool to accomplish work asynchronously in parallel threads. スレッド プールでは、一連のスレッドを管理し、スレッドが使用可能になるとキューを使って作業項目をそのスレッドに割り当てます。The thread pool manages a set of threads and uses a queue to assign work items to threads as they become available. スレッド プールを使うと UI をブロックすることなく広範な作業を実行できるため、スレッド プールは Windows ランタイムで利用できる非同期プログラミング パターンと似ています。ただし、スレッド プールは非同期プログラミング パターンよりも細かく制御でき、これを使って複数の作業項目を並列的に実行できます。The thread pool is similar to the asynchronous programming patterns available in the Windows Runtime because it can be used to accomplish extended work without blocking the UI, but the thread pool offers more control than the asynchronous programming patterns and you can use it to complete multiple work items in parallel. スレッド プールを使うと、次のことが可能になります。You can use the thread pool to:

  • 作業項目の送信、作業項目の優先度の管理、作業項目の取り消し。Submit work items, control their priority, and cancel work items.

  • タイマーおよび定期タイマーを使った作業項目のスケジュール設定。Schedule work items using timers and periodic timers.

  • 重要な作業項目のためのリソースの確保。Set aside resources for critical work items.

  • 指定されたイベントとセマフォに応答した作業項目の実行。Run work items in response to named events and semaphores.

スレッド プールにより、スレッドの作成と破棄のオーバーヘッドが少なくなるため、効率的にスレッドを管理できます。The thread pool is more efficient at managing threads because it reduces the overhead of creating and destroying threads. つまり、複数の CPU コアを使ってスレッドを最適化でき、バックグラウンド タスクが実行されているときにアプリ間でスレッド リソースを分配することができます。The means it has access to optimize threads across multiple CPU cores, and it can balance thread resources between apps and when background tasks are running. スレッド管理のしくみよりも、タスクを実行するコードを作成することが主な目的であるので、組み込みスレッド プールを使うと便利です。Using the built-in thread pool is convenient because you focus on writing code that accomplishes a task instead of the mechanics of thread management.

トピックTopic 説明Description
非同期プログラミング (UWP アプリ)Asynchronous programming (UWP apps) このトピックでは、ユニバーサル Windows プラットフォーム (UWP) での非同期プログラミングと、C#、Microsoft Visual Basic .NET、Visual C++ コンポーネント拡張機能 (C++/CX)、および JavaScript における非同期プログラミングの表現について説明します。This topic describes asynchronous programming in the Universal Windows Platform (UWP) and its representation in C#, Microsoft Visual Basic .NET, Visual C++ component extensions (C++/CX), and JavaScript.
C++/CX での非同期プログラミング (UWP アプリ)Asynchronous programming in C++/CX (UWP apps) ここでは、ppltasks.h の task 名前空間で定義された concurrency クラスを使って C++/CX の非同期メソッドを実装する際に推奨される方法について説明します。This article describes the recommended way to consume asynchronous methods in C++/CX by using the task class that's defined in the concurrency namespace in ppltasks.h.
スレッド プールを使うためのベスト プラクティスBest practices for using the thread pool このトピックでは、スレッド プールを使った操作のベスト プラクティスについて説明します。This topic describes best practices for working with the thread pool.
C# または Visual Basic での非同期 API の呼び出しCall asynchronous APIs in C# or Visual Basic ユニバーサル Windows プラットフォーム (UWP) には、時間がかかる可能性がある操作を実行しているときでも、アプリの応答性を保つために、さまざまな非同期 API が用意されています。The Universal Windows Platform (UWP) includes many asynchronous APIs to ensure that your app remains responsive when it does work that might take an extended amount of time. このトピックでは、C# または Microsoft Visual Basic で UWP の非同期メソッドを使う方法について説明します。This topic discusses how to use asynchronous methods from the UWP in C# or Microsoft Visual Basic.
定期的な作業項目の作成Create a periodic work item 定期的に実行される作業項目の作成方法を説明します。Learn how to create a work item that repeats periodically.
スレッド プールへの作業項目の送信Submit a work item to the thread pool スレッド プールに作業項目を送信することで独立したスレッドで作業を実行する方法について説明します。Learn how to do work in a separate thread by submitting a work item to the thread pool.
タイマーを使った作業項目の送信Use a timer to submit a work item タイマーが終了した後に実行される作業項目の作成方法を説明します。Learn how to create a work item that runs after a timer elapses.