IRONSOFTWAREHOME
開発者向けアップデート

C# Wait For Seconds (開発者向けの仕組み)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月23日

プログラミングにおいて、コードの実行を一定時間一時停止または遅延させたいことがあります。これにより、異なる時間条件をシミュレートしたり、特定のタスクを優先したり、メインスレッドをブロックせずに他のタスクを実行したりすることができます。

このガイドでは、C#での待機方法を説明します。非同期メソッド、スリープコマンド、スリープ関数、コンソールアプリ、および私たちの業界をリードするPDF生成ツール、IronPDFでの待機関数の含め方について説明します。

C#でタスクを待つ方法

スリープコマンド

"スリープ"は、現在のタスクの実行を一定時間一時停止するシンプルでありながら強力なコマンドで、次のタスクに進む前にプログラムに待機するよう指示します。 C# では、次のコード例のように Thread.Sleep(int milliseconds) メソッドを使ってこれを行います。

using System;
using System.Threading;

class Program
{
    public static void Main()
    {
        Console.WriteLine("Starting the program...");
        Thread.Sleep(3000); // Sleep for 3 seconds
        Console.WriteLine("...Program continues after 3 seconds");
    }
}

ここでは、プログラムはまず"プログラムの開始中..."とコンソールに表示してから、Thread.Sleep メソッドを使って3,000ミリ秒(3秒間)停止します。 指定された遅延後、プログラムは再開し、コンソールに"...プログラムは3秒後に続行します"を出力します。

非同期メソッドとタスク

C#の非同期メソッドにより、メインスレッドに干渉することなく複数のタスクを同時に実行することができます。 これにより、あるタスクが待機中でも、他のタスクを実行し続けることができます。 非同期メソッドを実装するためには、async キーワードと Task クラスを使用する必要があります。

using System;
using System.Threading.Tasks;

class Program
{
   public static async Task Main()
   {
       Console.WriteLine("Starting Task 1...");
       var task1 = DoSomethingAsync(3000);
       Console.WriteLine("Starting Task 2...");
       var task2 = DoSomethingAsync(2000);

       await Task.WhenAll(task1, task2);
       Console.WriteLine("Both tasks completed.");
   }

   private static async Task DoSomethingAsync(int milliseconds)
   {
       await Task.Delay(milliseconds); // Asynchronously wait without blocking the main thread
       Console.WriteLine($"Task completed after {milliseconds} milliseconds");
   }
}

このコード例では、2つのタスクが同時に実行されています。DoSomethingAsync メソッドはタスクが遅延するべきミリ秒での時間を表す int パラメーターを取ります(コード中の 3000 および 2000 に見られるように、いずれもタイムアウト値です)。 Task.Delay メソッドは Thread.Sleep() メソッドと似ていますが、非同期タスクで機能し、メインスレッドをブロックしません。

タイマーを使ってタスクをスケジュールする

C#のタイマーを使うことで、指定された間隔後に特定のタスクを実行することができます。 System.Timers.Timer クラスを使ってタイマーを作成できます。 コンソールアプリでタイマーを使用する例を以下に示します。

using System;
using System.Timers;

class Program
{
   public static void Main()
   {
       var timer = new Timer(1000); // Create a timer with a 1-second interval
       timer.Elapsed += OnTimerElapsed;
       timer.AutoReset = true;
       timer.Enabled = true;

       Console.WriteLine("Press any key to exit...");
       Console.ReadKey();
   }

   private static void OnTimerElapsed(object sender, ElapsedEventArgs e)
   {
       Console.WriteLine("Timer ticked at " + e.SignalTime);
   }
}

上記の例では、1秒間隔のタイマーを作成します。 タイマーがチックするたびに OnTimerElapsed メソッドが実行されます。 タイマーが各チック後に自動的に再起動するように AutoReset プロパティを true に設定します。 タイマーを開始するために Enabled プロパティを true に設定します。

このコンソールアプリケーションを実行すると、タイマーが毎秒ティックし、コンソールにティック時間を表示します。 プログラムは、終了するキーを押すまで継続して実行されます。

カスタム待機関数の作成

特定の要件を満たすために、時折カスタムの待機関数が必要になることがあります。 例えば、スレッド全体ではなく、現在のタスクだけをブロックする待機関数を作成したい場合があります。 これを実現するには、非同期デリゲートを使用します。

カスタム待機関数の例を以下に示します。

using System;
using System.Threading;
using System.Threading.Tasks;

class Program
{
   public static async Task Main()
   {
       Console.WriteLine("Starting Task 1...");
       await CustomWaitAsync(3000);
       Console.WriteLine("Task 1 completed.");

       Console.WriteLine("Starting Task 2...");
       await CustomWaitAsync(2000);
       Console.WriteLine("Task 2 completed.");
   }

   private static async Task CustomWaitAsync(int milliseconds)
   {
       await Task.Run(() => Thread.Sleep(milliseconds)); // Run in a separate task to avoid blocking the main thread
   }
}

ここで、CustomWaitAsync メソッドはミリ秒単位の遅延時間を表す int パラメーターを受け入れます。 このメソッドは非同期デリゲートを使用して新しいタスク内で Thread.Sleep 関数を実行し、現在のタスク状態が待機中にブロックされますが、メインスレッドはブロックされません。

適切な待機戦略の選択

C#の待ちステートメント、スリープコマンド、非同期メソッド、タイマー、カスタム待機関数をカバーしたので、それぞれの技術をいつ使用するかを知ることが重要です。 以下は簡単な概要です。

  • 特定の時間分、コードの実行を一時停止する簡単な方法が必要な時は Thread.Sleep 関数を使用します。
  • メインスレッドをブロックせずに複数のタスクを同時に実行する必要がある場合は、非同期メソッドとタスクを使用します。
  • 特定の間隔で特定のタスクを実行する必要がある場合は、タイマーを使用します。
  • 組み込みメソッドでは満たされない特別な要件がある場合は、カスタム待機関数を作成します。

IronPDFを使った待機関数によるPDF生成

IronPDFは、特にウェブ開発者を念頭に置いて設計された軽量 for .NET PDFライブラリです。 これはPDFファイルの読み取り、書き込み、操作を簡単にし、あらゆる種類のファイルタイプをPDFコンテンツに変換できます。デスクトップおよびウェブの両方で.NETプロジェクトで使用できます。 最も良い点は、開発環境で無料で試せることです。 では始めましょう。

IronPDFはHTMLファイル、URL、生文字列、およびZIPファイルで動作します。 コードのクイックオーバービューを以下に示します。

using IronPdf;

class Program
{
   static void Main(string[] args)
   {
       var renderer = new ChromePdfRenderer();

       // 1. Convert HTML String to PDF
       var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
       var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
       pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

       // 2. Convert HTML File to PDF
       var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
       var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
       pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

       // 3. Convert URL to PDF
       var url = "http://ironpdf.com"; // Specify the URL
       var pdfFromUrl = renderer.RenderUrlAsPdf(url);
       pdfFromUrl.SaveAs("URLToPDF.pdf");
   }
}

IronPDFは、タスク実行後、スケジュールされた間隔中、または現在のスレッドが実行を再開するときにPDFドキュメントを生成するために、待機戦略とシームレスに統合できます。

たとえば、IronPDFを非同期メソッドと組み合わせて、データベースからデータを取得した後にPDFレポートを生成することができ、メインスレッドをブロックしません。 同様に、タイマークラスを使用してアプリケーションのデータのPDFスナップショットを定期的に作成することもできます。

IronPDFライブラリをインストールする

IronPDFは使用が簡単ですが、インストールするのはさらに簡単です。 これを行う方法はいくつかあります:

方法1:NuGetパッケージマネージャーコンソール

Visual Studioのソリューションエクスプローラーで、参照を右クリックして、NuGetパッケージの管理をクリックします。 ブラウズをクリックして"IronPDF"を検索し、最新バージョンをインストールします。 これを見たら、うまくいっています:

ツール -> NuGetパッケージマネージャ -> パッケージマネージャコンソールに移動し、パッケージマネージャタブで次の行を入力することもできます。

PM > Install-Package IronPdf

最後に、NuGetの公式ウェブサイトで直接IronPDFを取得することができます。 ページの右側のメニューからパッケージをダウンロードオプションを選択し、ダウンロードをダブルクリックして自動的にインストールし、プロジェクトでの使用を開始するためにソリューションを再読み込みします。

うまくいきませんでしたか? 私たちの高度なNuGetインストールページでプラットフォーム固有のヘルプを見つけることができます。

方法2:DLLファイルを使用

こちらからIronPDF DLLファイルを直接取得して、手動でVisual Studioに追加することもできます。 Windows、MacOS、およびLinux DLLパッケージへのリンクを含む完全な手順については、専用のインストールページをご覧ください。

IronPDF で C# Wait を使用する方法

次の例でIronPDFに待機関数を含める方法を説明します。

using System;
using System.Threading.Tasks;
using System.Diagnostics;
using IronPdf;

class Program
{
   public static async Task Main()
   {
       Console.WriteLine("Starting the PDF generation task...");
       Stopwatch stopwatch = Stopwatch.StartNew();
       await Task.Delay(3000); // Wait for 3 seconds
       GeneratePdf();
       Console.WriteLine("PDF generated successfully.");
   }

   private static void GeneratePdf()
   {
       var htmlToPdf = new ChromePdfRenderer();
       var pdf = htmlToPdf.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
       pdf.SaveAs("HelloWorld.pdf");
   }
}

ここでは、3秒待ってからPDFを生成するために Task.Delay メソッドを使用します。 その後、PDFはアプリケーションの作業ディレクトリに"HelloWorld.pdf"として保存されます。

そして、これが最終製品です:

IronPDFでの待機メソッドの使用

C#アプリケーションでは、データをDataTableに読み込む、またはIronPDFを使用してPDFレポートを生成するなどの操作を行う際に、スリープ機能を効率的に使用して現在のスレッドとCPUの時間を管理することができます。

結論

最初は直感に反するかもしれませんが、コードに待機ステートメントを実装することは、効率的なアプリケーションを構築するために欠かせないスキルです。 そして、IronPDFを組み込むことで、メインスレッドをブロックせずにPDFドキュメントを即時に作成することで、アプリケーションを次のレベルに引き上げることができます。

IronPDFを体験する準備はできましたか? 30日間の無料トライアルで始めることができます。 開発目的で完全に無料で使用できるので、その真の実力を確かめることができます。 そして、それを気に入ったなら、IronPDFは$999から始まります。 より大きな節約のためには、Iron Suiteをチェックしてください。ここでは、9つのIron Softwareツールを2つの価格で手に入れることができます。 コーディングを楽しんでください!

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から