.NET 帮助 C# Stopwatch(开发者如何使用) Curtis Chau 已更新:六月 22, 2025 Download IronPDF NuGet 下载 DLL 下载 Windows 安装程序 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 在广阔的编程语言领域中,C# 作为一种多功能且强大的语言脱颖而出,用于开发各种应用程序,从桌面应用到网络和移动应用。 使 C# 成为开发人员之间的宠爱的关键特性之一是它丰富的库和类集合,提供了针对各种编程挑战的解决方案。 在这些特性中,Stopwatch 类因其在精确时间测量、剖析和性能分析中的作用而有特别的位置。 在本文中,我们将了解如何在C#中使用Stopwatch对象来查找执行特定任务所需的时间,通过公共TimeSpan Elapsed属性。 此外,我们还将记录使用IronPDF for C# Developers测量的PDF创建的总耗时。 1. 什么是 Stopwatch 类? Stopwatch 类是 C# 中 System.Diagnostics 命名空间的一部分,提供了一种简单而高效的方式来测量经过的时间,具有高精度。 它随着 .NET Framework 的引入成为了一个开发人员的宝贵工具,用于跟踪代码段的执行时间,优化性能,以及对应用程序进行剖析。 2. 初始化和基本使用 使用 Stopwatch 类是直截了当的。 为了开始使用它,您首先需要创建Stopwatch类的新实例: using System.Diagnostics; class Program { static void Main() { // Create a new stopwatch instance for timing operations Stopwatch stopwatch = new Stopwatch(); } } using System.Diagnostics; class Program { static void Main() { // Create a new stopwatch instance for timing operations Stopwatch stopwatch = new Stopwatch(); } } Imports System.Diagnostics Friend Class Program Shared Sub Main() ' Create a new stopwatch instance for timing operations Dim stopwatch As New Stopwatch() End Sub End Class $vbLabelText $csharpLabel 一旦创建了Stopwatch实例后,就可以开始和停止秒表来测量经过的时间: using System; class Program { static void Main() { Stopwatch stopwatch = new Stopwatch(); // Start timing stopwatch.Start(); Console.WriteLine("It will measure the time between start and stop"); // Stop timing stopwatch.Stop(); } } using System; class Program { static void Main() { Stopwatch stopwatch = new Stopwatch(); // Start timing stopwatch.Start(); Console.WriteLine("It will measure the time between start and stop"); // Stop timing stopwatch.Stop(); } } Imports System Friend Class Program Shared Sub Main() Dim stopwatch As New Stopwatch() ' Start timing stopwatch.Start() Console.WriteLine("It will measure the time between start and stop") ' Stop timing stopwatch.Stop() End Sub End Class $vbLabelText $csharpLabel 通过使用Elapsed属性可以获得经过时间: using System; class Program { static void Main() { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // Simulate some work by sleeping for 2 seconds System.Threading.Thread.Sleep(2000); // Stop timing stopwatch.Stop(); // Fetch the elapsed time TimeSpan elapsed = stopwatch.Elapsed; Console.WriteLine($"Elapsed time: {elapsed}"); } } using System; class Program { static void Main() { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // Simulate some work by sleeping for 2 seconds System.Threading.Thread.Sleep(2000); // Stop timing stopwatch.Stop(); // Fetch the elapsed time TimeSpan elapsed = stopwatch.Elapsed; Console.WriteLine($"Elapsed time: {elapsed}"); } } Imports System Friend Class Program Shared Sub Main() Dim stopwatch As New Stopwatch() stopwatch.Start() ' Simulate some work by sleeping for 2 seconds System.Threading.Thread.Sleep(2000) ' Stop timing stopwatch.Stop() ' Fetch the elapsed time Dim elapsed As TimeSpan = stopwatch.Elapsed Console.WriteLine($"Elapsed time: {elapsed}") End Sub End Class $vbLabelText $csharpLabel 输出: 3. Stopwatch 的高级功能 Stopwatch 类提供了几个基本时间测量之外的高级功能。 让我们来探索这些功能的一些部分: 3.1. Restart 方法 Restart 方法是一种便捷的方法,在一个操作中停止并将经过时间重置为零。 在测量多个代码段的执行时间而不创建新的Stopwatch实例时,这可能很有用。 using System; class Program { static void Main() { Stopwatch stopwatch = new Stopwatch(); // Start timing stopwatch.Start(); Console.WriteLine("The time will restart after executing the below code"); // Restart timing stopwatch.Restart(); // Simulate work System.Threading.Thread.Sleep(1000); // Stop timing stopwatch.Stop(); // Fetch the elapsed time after restart TimeSpan elapsed = stopwatch.Elapsed; Console.WriteLine($"Total Elapsed time after Restart: {elapsed}"); } } using System; class Program { static void Main() { Stopwatch stopwatch = new Stopwatch(); // Start timing stopwatch.Start(); Console.WriteLine("The time will restart after executing the below code"); // Restart timing stopwatch.Restart(); // Simulate work System.Threading.Thread.Sleep(1000); // Stop timing stopwatch.Stop(); // Fetch the elapsed time after restart TimeSpan elapsed = stopwatch.Elapsed; Console.WriteLine($"Total Elapsed time after Restart: {elapsed}"); } } Imports System Friend Class Program Shared Sub Main() Dim stopwatch As New Stopwatch() ' Start timing stopwatch.Start() Console.WriteLine("The time will restart after executing the below code") ' Restart timing stopwatch.Restart() ' Simulate work System.Threading.Thread.Sleep(1000) ' Stop timing stopwatch.Stop() ' Fetch the elapsed time after restart Dim elapsed As TimeSpan = stopwatch.Elapsed Console.WriteLine($"Total Elapsed time after Restart: {elapsed}") End Sub End Class $vbLabelText $csharpLabel 输出: 3.2. IsHighResolution 属性 IsHighResolution 属性表明基础时间机制是否基于高精度性能计数器,以精确地测量经过时间。在处理可能不支持高精度计时方法的系统时,检查此属性可能很有用。 using System; class Program { static void Main() { if (Stopwatch.IsHighResolution) { Console.WriteLine("High-resolution timing is supported"); } else { Console.WriteLine("Fallback to lower-resolution timing"); } } } using System; class Program { static void Main() { if (Stopwatch.IsHighResolution) { Console.WriteLine("High-resolution timing is supported"); } else { Console.WriteLine("Fallback to lower-resolution timing"); } } } Imports System Friend Class Program Shared Sub Main() If Stopwatch.IsHighResolution Then Console.WriteLine("High-resolution timing is supported") Else Console.WriteLine("Fallback to lower-resolution timing") End If End Sub End Class $vbLabelText $csharpLabel 输出: 3.3. Frequency 属性 Frequency 属性返回基础计时器以每秒计数的频率。 此值对于将经过的计数转换为其他时间单位(例如毫秒)很有用。 using System; class Program { static void Main() { long frequency = Stopwatch.Frequency; Console.WriteLine($"Timer Frequency: {frequency} ticks per second"); } } using System; class Program { static void Main() { long frequency = Stopwatch.Frequency; Console.WriteLine($"Timer Frequency: {frequency} ticks per second"); } } Imports System Friend Class Program Shared Sub Main() Dim frequency As Long = Stopwatch.Frequency Console.WriteLine($"Timer Frequency: {frequency} ticks per second") End Sub End Class $vbLabelText $csharpLabel 输出: 3.4. ElapsedTicks 属性 ElapsedTicks 属性提供对原始计数的直接访问,而无需将其转换为时间单位。 这在执行自定义计算或处理低级定时要求时非常有益。 using System; class Program { static void Main() { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // Simulate some work System.Threading.Thread.Sleep(1500); // Stop timing stopwatch.Stop(); // Fetch the elapsed ticks long elapsedTicks = stopwatch.ElapsedTicks; Console.WriteLine($"Elapsed Ticks: {elapsedTicks}"); } } using System; class Program { static void Main() { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // Simulate some work System.Threading.Thread.Sleep(1500); // Stop timing stopwatch.Stop(); // Fetch the elapsed ticks long elapsedTicks = stopwatch.ElapsedTicks; Console.WriteLine($"Elapsed Ticks: {elapsedTicks}"); } } Imports System Friend Class Program Shared Sub Main() Dim stopwatch As New Stopwatch() stopwatch.Start() ' Simulate some work System.Threading.Thread.Sleep(1500) ' Stop timing stopwatch.Stop() ' Fetch the elapsed ticks Dim elapsedTicks As Long = stopwatch.ElapsedTicks Console.WriteLine($"Elapsed Ticks: {elapsedTicks}") End Sub End Class $vbLabelText $csharpLabel 输出: 4. C# 中的 IronPDF 入门 IronPDF 是一个强大的 C# 库,允许开发人员在 .NET 应用程序中轻松创建、操作和处理 PDF 文档。 无论您是需要从 HTML、图像还是其他格式生成 PDF,IronPDF 都提供了一整套工具,便于无缝集成到您的 C# 项目中。 IronPDF 提供了将 HTML 转换为 PDF 的独特功能,保持布局和样式完整。 该功能非常适合从网络内容创建 PDF,如报告、发票或文档。 您可以将 HTML 文件、URL 和 HTML 字符串转换为 PDF 文件。 using IronPdf; class Program { static void Main(string[] args) { // Initialize the PDF renderer 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) { // Initialize the PDF renderer 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"); } } Imports IronPdf Friend Class Program Shared Sub Main(ByVal args() As String) ' Initialize the PDF renderer Dim renderer = New ChromePdfRenderer() ' 1. Convert HTML String to PDF Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>" Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent) pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf") ' 2. Convert HTML File to PDF Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath) pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf") ' 3. Convert URL to PDF Dim url = "http://ironpdf.com" ' Specify the URL Dim pdfFromUrl = renderer.RenderUrlAsPdf(url) pdfFromUrl.SaveAs("URLToPDF.pdf") End Sub End Class $vbLabelText $csharpLabel 4.1. 在 C# 中安装 IronPDF 要开始在 C# 应用程序中使用 IronPDF,请按照以下简单步骤进行: NuGet Package Manager:在 Visual Studio 中打开您的 C# 项目并导航到包管理器控制台。 执行以下命令以安装 IronPDF: Install-Package IronPdf 或者,您可以使用 IronPDF NuGet 包页面 下载并安装 "IronPdf" 包。 在代码中引用:安装成功后,在 C# 代码中添加对 IronPDF 的引用: using IronPdf; using IronPdf; Imports IronPdf $vbLabelText $csharpLabel 现在,您可以在应用程序中利用 IronPDF 的功能。 4.2. 使用 C# Stopwatch 计时 URL 的 PDF 创建 现在,让我们演示如何使用 C# 的 Stopwatch 类来测量使用 IronPDF 从 URL 创建 PDF 所需的时间: using System; using System.Diagnostics; using IronPdf; class Program { static void Main() { // Initialize IronPDF Renderer IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf(); // Specify the URL for PDF generation string urlToConvert = "https://example.com"; // Use Stopwatch to measure the time taken Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // Create PDF from URL PdfDocument PDF = Renderer.RenderUrlAsPdf(urlToConvert); // Stop measuring elapsed time stopwatch.Stop(); // Save the generated PDF to a file PDF.SaveAs("GeneratedPDF.pdf"); // Display the time taken Console.WriteLine($"Time taken to create PDF from URL: {stopwatch.ElapsedMilliseconds} milliseconds"); } } using System; using System.Diagnostics; using IronPdf; class Program { static void Main() { // Initialize IronPDF Renderer IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf(); // Specify the URL for PDF generation string urlToConvert = "https://example.com"; // Use Stopwatch to measure the time taken Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // Create PDF from URL PdfDocument PDF = Renderer.RenderUrlAsPdf(urlToConvert); // Stop measuring elapsed time stopwatch.Stop(); // Save the generated PDF to a file PDF.SaveAs("GeneratedPDF.pdf"); // Display the time taken Console.WriteLine($"Time taken to create PDF from URL: {stopwatch.ElapsedMilliseconds} milliseconds"); } } Imports System Imports System.Diagnostics Imports IronPdf Friend Class Program Shared Sub Main() ' Initialize IronPDF Renderer Dim Renderer As New IronPdf.HtmlToPdf() ' Specify the URL for PDF generation Dim urlToConvert As String = "https://example.com" ' Use Stopwatch to measure the time taken Dim stopwatch As New Stopwatch() stopwatch.Start() ' Create PDF from URL Dim PDF As PdfDocument = Renderer.RenderUrlAsPdf(urlToConvert) ' Stop measuring elapsed time stopwatch.Stop() ' Save the generated PDF to a file PDF.SaveAs("GeneratedPDF.pdf") ' Display the time taken Console.WriteLine($"Time taken to create PDF from URL: {stopwatch.ElapsedMilliseconds} milliseconds") End Sub End Class $vbLabelText $csharpLabel 此示例初始化 IronPDF,使用 HtmlToPdf 类从指定的 URL 渲染 PDF,并使用 Stopwatch 测量所需时间。 通过调整 urlToConvert 变量为所需 URL,然后可以根据应用程序需要进一步自定义 PDF 创建过程。 输出: 5. 结论 总之,C# 中的 Stopwatch 类作为精确时间测量和性能分析的关键工具,提供了开发人员优化代码和评估操作效率的方法。 其直观的界面和高级功能使其在各种计时需求中具有多功能性。 此外,将 IronPDF 集成到 C# 项目中扩展了语言在 PDF 文档操作方面的能力,提供了生成、修改和处理 PDF 的无缝解决方案。 使用 Stopwatch 测量使用 IronPDF 从 URL 创建 PDF 所需时间的示例展示了精确时间跟踪与高级库之间的协同作用,强调了在评估应用程序性能时精细计时的重要性。 总之,C# 的 Stopwatch 和 IronPDF 让开发人员能够构建高性能应用程序,这些应用程序具有精确的计时和多功能的 PDF 处理能力。 要获取免费试用许可以测试 IronPDF 功能,请访问 IronPDF 审核许可信息页面。 关于 URL 转 PDF 转换的完整教程可以在 IronPDF URL 转 PDF 教程 页面找到。 常见问题解答 Stopwatch 类如何帮助优化 C# 应用程序性能? C# 中的 Stopwatch 类允许开发人员以高精度测量代码执行所花费的时间。通过跟踪经过的时间,开发人员可以识别性能瓶颈并优化代码以提高效率。 Stopwatch 类为 C# 开发人员提供了哪些高级功能? Stopwatch 类提供了高级功能,例如用于重置并重新开始计时的 Restart 方法、用于检查系统计时精度的 IsHighResolution、用于计时频率的 Frequency,以及用于细化时间测量的 ElapsedTicks。 Stopwatch 类可以在所有系统上用于高分辨率计时吗? 如果系统硬件支持高分辨率计时,Stopwatch 类则支持。开发人员可以检查 IsHighResolution 属性以确定其系统是否允许高分辨率计时。 如何在 C# 应用程序中将 HTML 内容转换为 PDF? 您可以使用 IronPDF 在 C# 应用程序中将 HTML 内容转换为 PDF。IronPDF 保持 HTML 的布局和样式完整性,使其适合生成高质量的 PDF 文档,如报告和发票。 如何在 C# 中将 Stopwatch 与 PDF 生成结合使用? 要将 Stopwatch 与 PDF 生成结合使用,在使用 IronPDF 启动 PDF 渲染过程之前启动 Stopwatch。一旦 PDF 生成完毕,停止 Stopwatch 以测量整个过程所用时间。 在 Visual Studio C# 项目中安装 PDF 库的过程是什么? 在 Visual Studio 中,您可以使用 NuGet 包管理器安装 IronPDF。在包管理器控制台中执行命令 Install-Package IronPdf 并在代码中包含 using IronPdf; 以访问其功能。 Stopwatch 类为何对 C# 性能调优至关重要? Stopwatch 类对性能调优至关重要,因为它提供了精确的计时功能,帮助开发人员测量和分析代码执行时间。这些信息对于识别缓慢操作和提高应用程序性能至关重要。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已更新九月 4, 2025 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多 已更新九月 4, 2025 C# String Equals(开发者用法) 与强大的 PDF 库 IronPDF 结合使用,切换模式匹配允许您为文档处理构建更智能、更简洁的逻辑。 阅读更多 已更新八月 5, 2025 C# Switch 模式匹配(开发者用法) 与强大的 PDF 库 IronPDF 结合使用,切换模式匹配允许您为文档处理构建更智能、更简洁的逻辑。 阅读更多 Jquery Datatable(开发者如何使用)Swashbuckle ASP .NET Core(开发...
已更新九月 4, 2025 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多