.NET 幫助

C# 等待秒數(開發人員如何操作)

發佈 2024年8月15日
分享:

在程式設計中,有時您會想要暫停或延遲程式碼的執行一段時間。這樣可以模擬不同的時間條件、優先處理某些任務、在不阻塞主線程的情況下執行其他任務等等。

在本指南中,我們將解釋如何在 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 方法暫停 3000 毫秒之前,先在控制台打印「Starting the program...」。(或三秒钟). 在指定的延遲後,程式恢復運行,並向控制台輸出「...程式在 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);
       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#

在此代碼範例中,我們有兩個任務同時運行。DoSomethingAsync方法接受一個整數參數,表示該任務應延遲的時間(以毫秒為單位)。(如你所見,程式碼中的‘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# 的等待語句、sleep 命令、async 方法、計時器和自定義等待函數,因此了解何時使用每種技術是很重要的。 以下是快速摘要

  • 當您需要一種簡單的方法來暫停程式碼執行一段指定時間時,可以使用 Thread.Sleep 函數。
  • 當需要同時執行多個任務且不阻塞主執行緒時,請使用非同步方法與任務。
  • 當您需要以指定的間隔執行特定任務時,請使用計時器。
  • 當內建方法無法滿足您的特定需求時,創建自定義等待功能。

使用 Wait 函數透過 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 易於使用,但安裝起來更簡單。 您有幾種方法可以做到:

方法 1:NuGet 套件管理器主控台

在 Visual Studio 中,在方案總管中右鍵點擊參考,然後點擊管理 NuGet 套件。 點擊瀏覽並搜索「IronPDF」,然後安裝最新版本。 如果您看到此訊息,表示一切正常:

Csharp Wait For Seconds 1 related to 方法 1:NuGet 套件管理器主控台

您也可以前往工具 -> NuGet 套件管理員 -> 套件管理主控台,並在套件管理標籤中輸入以下行:

Install-Package IronPdf

最後,您可以直接從NuGet 官方網站. 從頁面右側的選單中選擇下載套件選項,雙擊您的下載文件以自動安裝,然後重新載入方案以在您的專案中開始使用它。

不起作用嗎? 您可以在我們的網站上找到針對特定平台的幫助進階 NuGet 安裝頁面.

方法二:使用DLL檔案

您也可以直接從我們那裡獲取 IronPDF 的 DLL 文件,並將其手動添加到 Visual Studio。 如需完整指示及 Windows、MacOS 和 Linux DLL 套件的連結,請查看我們的專用資源安裝頁面.

如何在 IronPDF 中使用 C# 等待

您可以在以下範例中查看如何在 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"。

這就是最終產品:

Csharp Wait For Seconds 2 related to 如何在 IronPDF 中使用 C# 等待

使用 Wait 方法與 IronPDF

在 C# 應用程式中,您可以有效地使用睡眠函數來管理當前執行緒和 CPU 時間,同時進行如將資料載入 DataTable 或使用 IronPDF 生成 PDF 報告等操作。

結論

乍看之下,这可能显得不合常理,但在构建高效应用程序时,将等待语句实现到代码中是一项必备技能。 通過整合IronPDF,您可以通過即時創建PDF文件而不阻塞主線程,將您的應用程序提升到下一個層次。

準備好動手使用IronPDF了嗎? 您可以從我們的30 天免費試用. 它也可完全免費用於開發目的,因此您可以真正了解它的組成。 如果您喜歡所見內容,IronPDF 的起價僅為$749. 如需更多節省,請查看Iron Suite只需兩個產品的價格,你就能獲得全部九個Iron Software工具。 編碼快樂!

Csharp Wait For Seconds 3 related to 結論

< 上一頁
Razor C#(開發者如何運作)
下一個 >
C# for 迴圈(開發人員如何運作)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >