在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在程式設計中,有時您會想要暫停或延遲程式碼的執行一段時間。這樣可以模擬不同的時間條件、優先處理某些任務、在不阻塞主線程的情況下執行其他任務等等。
在本指南中,我們將解釋如何在 C# 中等待,包括異步方法、睡眠命令、睡眠函數和控制台應用程式,並如何在我們業界領先的 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# 的等待語句、sleep 命令、async 方法、計時器和自定義等待函數,因此了解何時使用每種技術是很重要的。 以下是快速摘要
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工具。 編碼快樂!