在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在程式設計中,有時您會希望暫停或延遲程式碼的執行一段時間。這樣可以模擬不同的時間條件,優先處理某些任務,在不阻塞主執行緒的情況下執行其他任務,等等。
在本指南中,我們將解釋如何在 C# 中進行等待,包括非同步方法、sleep 命令、sleep 函數和控制台應用程式,以及如何在我們領先業界的 PDF 生成工具 IronPDF 中包含等待功能。
‘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
程式一開始會在使用 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
在此代碼範例中,我們有兩個任務同時運行。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
在上述範例中,我們創建了一個間隔為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
此處,CustomWaitAsync 方法接受一個表示延遲時間的 int 參數(以毫秒為單位)。該方法使用一個異步委託在新任務中運行 Thread.Sleep 函數,確保當前任務狀態在等待期間被阻止,但不會阻止主線程。
現在我們已經介紹了 C# 的等待語句、休眠命令、異步方法、計時器和自定義等待函數,了解何時使用每種技術至關重要。以下是快速總結:
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
IronPDF 可以無縫集成到您的等待策略中,在執行任務後、計劃間隔期間或當前執行緒恢復執行時生成 PDF 文件。
例如,您可以將 IronPDF 與異步方法結合使用,在從資料庫獲取數據後生成 PDF 報告,而不會阻塞主執行緒。同樣,您可以使用計時器類定期創建應用程序數據的 PDF 快照。
IronPDF 很容易使用,但安裝起來更是簡單。有幾種方式可以進行:
在 Visual Studio 中,在方案總管中右擊 參考,然後點擊 管理 NuGet 套件。點擊瀏覽並搜索 'IronPDF',然後安裝最新版本。如果看到此畫面,表示功能正常:
您還可以前往工具 -> NuGet 套件管理員 -> 套件管理員主控台,然後在套件管理員標籤中輸入以下行:
Install-Package IronPdf
最後,您可以直接從 NuGet 官方網站從頁面右側的菜單中選擇下載軟體包選項,雙擊您的下載進行自動安裝,並重新載入解決方案以在您的項目中使用它。
沒有成功?您可以在我們的網站上找到特定平台的幫助。 進階 NuGet 安裝頁面.
您也可以直接從我們這裡獲取IronPDF DLL文件,並手動將其添加到Visual Studio。完整的說明以及Windows、MacOS和Linux的DLL包鏈接,請查看我們的專用 安裝頁面.
您可以在以下範例中查看如何在 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
在這裡,我們使用 Task.Delay 方法等待 3 秒後生成 PDF。待等待完成後,該 PDF 將被保存為 "HelloWorld.pdf" 在應用程式的工作目錄中。
這就是最終產品:
在 C# 應用程式中,您可以有效地使用暫停功能來管理當前執行緒和 CPU 時間,同時執行如將數據加載到 DataTable 或使用 IronPDF 生成 PDF 報告的操作。
一開始這可能看起來不直觀,但在您的代碼中實現等待語句是構建高效應用程序時必備的技能。而通過整合 IronPDF,您可以即時創建 PDF 文件,而不會阻塞主線程,將您的應用程序提升到一個新水平。
準備好開始使用 IronPDF 了嗎?您可以從我們的 30 天免費試用它也可以完全免費用於開發目的,讓您可以真正了解它的性能。如果您喜歡所見,IronPDF的價格低至 $749欲享受更多優惠,請查看 Iron Suite 在這裡,您可以以兩個的價格獲得全部九個Iron Software工具。祝編程愉快!