C#でマルチスレッド処理を行う方法

プログラムを作成していると、複数の処理を並行して行いたいと思う場面があるはずです。その際に利用できるのが「Task」です。Taskを使ってプログラムをマルチスレッド化することで、並行処理が楽々とできてしまいます。ここでは、C#のTaskについてサンプルコードも交えながら分かりやすく紹介していきます。
- プログラマー
- ちなみに、マルチスレッドと対になるのはシングルスレッドですね!
- プロジェクト
リーダー - 「1つの流れで完結する」シングルスレッドと、「 同時に複数の処理を実行する」マルチスレッドという形で覚えましょう。
C#のマルチスレッドについて
では、C#でマルチスレッド処理を行いたい場合はどうすれば良いのでしょうか。
ここでTaskを使用します。Taskは.NET Framework 4で導入されたクラスですが、これを用いることで非同期処理や並行処理が簡単に記述できるようになっているのです。
※Taskを使ったマルチスレッド処理は次項でご説明します。
マルチスレッドを使う目的
ここまで読んで、どの場合でマルチスレッドを使うのか疑問に思っている方もいるかと思うので、ここで補足しておきます。
マルチスレッドを使う目的は、「パフォーマンスの向上」です。
最も分かりやすい例は、レスポンス・タイム(処理のリクエストを送信してから反応が届くまでの時間)です。
例えば、日頃利用しているGoogleなどの検索エンジンで「C# task」と検索したのに、なかなか検索結果が表示されなかったらストレスが溜まります。これが毎度であれば、「もうGoogle使うの辞めようかな……」と思ってしまうのではないでしょうか。
つまり、ユーザーに長く使ってもらうサービスにするためには、レスポンス・タイムを含めた全体のパフォーマンスを向上させる必要があるのです。そして、それを実現できるのがマルチスレッドです。
マルチスレッドが使いたくなってきたところで、さっそくサンプルコードを見ていきましょう。
Taskクラスを使ってC#でマルチスレッド処理を書いてみよう
サンプルコードは以下のとおりです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; using System.Threading; using System.Threading.Tasks; public class TaskSample { public static void Main() { DispThreadInfo("[アプリケーション"); // 並行処理 var t = Task.Run(() => DispThreadInfo("[タスク")); t.Wait(); } static void DispThreadInfo(String str) { // 現在のマネージドスレッドの識別子を表示 Console.WriteLine("{0}スレッドID] => {1}", str, Thread.CurrentThread.ManagedThreadId); } } |
実行結果
- プログラマー
- 並行処理と聞くと複雑なイメージがありますが、コードを見ると何となく書けそうな気がしてきました!
- プロジェクト
リーダー - ただし、使いこなすのは案外難しいので、きちんと理解した上で利用してください。
Taskでパフォーマンスの高いプログラムを作成
今回は、Taskクラスを使った並行処理についてご紹介していきました。並行処理が楽々と行えるようになれば、パフォーマンスの高いプログラムを作成することが可能になります。ぜひTaskを使いこなして、幅広い処理を書けるエンジニアを目指してください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


新着案件New Job
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅)遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅)病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅)開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅)債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅)PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)