.NET ヘルプ

C# 秒数を待機する方法(開発者向け)

更新済み 8月 15, 2024
共有:

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

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

C# でタスクを待機する方法

スリープコマンド

「Sleep」は非常にシンプルながら強力なコマンドであり、現在のタスクの実行を特定の時間だけ一時停止させることができます。つまり、次のタスクに移る前にプログラムに待機するよう指示するのです。 C#では、Thread.Sleepを使用してこれを行います。(ミリ秒 ) 以下のコード例のようなメソッド:

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");
    }
}
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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

ここでは、プログラムはコンソールに「プログラムを開始します...」と表示した後、Thread.Sleepメソッドを使用して3,000ミリ秒間一時停止します。 (または3秒). 指定された遅延の後、プログラムは再開し、出力「...Program continues after 3 seconds」をコンソールに出力します。

非同期メソッドとタスク

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);
       Console.WriteLine($"Task completed after {milliseconds} milliseconds");
   }
}
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);
       Console.WriteLine($"Task completed after {milliseconds} milliseconds");
   }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

このコード例では、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);
   }
}
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);
   }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

上記の例では、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));
   }
}
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));
   }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

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

最適な待機戦略を選択する

C#の待機ステートメント、スリープコマンド、非同期メソッド、タイマー、カスタム待機関数について説明したところで、それぞれのテクニックをいつ使用するかを知ることが重要です。 簡単な要約を以下に示します:

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

Wait Functionを使用してIronPDFでPDFを生成する

IronPDFは、特にウェブ開発者を念頭に置いて設計された軽量の.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");
   }
}
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");
   }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

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

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

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

IronPDFは使いやすいですが、インストールはさらに簡単です。 やり方は2つあります:

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

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

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

Install-Package IronPDF

最後に、IronPDFを直接入手できます NuGetの公式ウェブサイト. 右側のメニューから「ダウンロードパッケージ」オプションを選択し、ダウンロードしたファイルをダブルクリックして自動的にインストールし、ソリューションを再読み込みしてプロジェクトで使用を開始してください。

うまくいきませんでしたか? プラットフォーム固有のヘルプについては、こちらをご覧ください 高度な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");
   }
}
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");
   }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

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

そしてこちらが最終製品です:

IronPDFで待機メソッドを使用する

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

結論

最初は逆効果のように思えるかもしれませんが、効率的なアプリケーションを構築する際には、コードにウェイトステートメントを実装することが必要不可欠なスキルです。 IronPDFを組み込むことによって、メインスレッドをブロックすることなく、その場でPDFドキュメントを作成して、アプリケーションのレベルをさらに向上させることができます。

IronPDFを使ってみませんか? 以下の文から始めることができます。 30日間無料試用. 開発目的での使用も完全に無料なので、その機能を十分に確認できます。 そして、気に入った場合は、IronPDFはわずかから始まります $749. さらにお得にするには、こちらをご覧ください アイアン スイート ここで、9つのIron Softwareツールすべてを2つの価格で手に入れることができます。 コーディングを楽しんでください!

< 以前
Razor C#(開発者向けの仕組み)
次へ >
C#のForループ(開発者向けの動作方法)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >