HiNC-2025-win-desktop-Deploy/App/wwwroot/HiAPI-docsite/api/Hi.Common.ConcurrentTimeCounter.html
2025-07-18 15:38:28 +08:00

361 lines
12 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ConcurrentTimeCounter | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ConcurrentTimeCounter | HiAPI-C# 2025 ">
<meta name="description" content="Thread-safe utility for measuring and tracking execution time across multiple tasks.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.ConcurrentTimeCounter">
<h1 id="Hi_Common_ConcurrentTimeCounter" data-uid="Hi.Common.ConcurrentTimeCounter" class="text-break">
Class ConcurrentTimeCounter
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Common.html">Common</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>Thread-safe utility for measuring and tracking execution time across multiple tasks.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class ConcurrentTimeCounter</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">ConcurrentTimeCounter</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<h2 id="Hi_Common_ConcurrentTimeCounter_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>This is the concurrent version of <a class="xref" href="Hi.Common.TimeCounter.html">TimeCounter</a>, designed for multi-threaded environments.
It measures the time elapsed between paired calls to <a class="xref" href="Hi.Common.ConcurrentTimeCounter.html#Hi_Common_ConcurrentTimeCounter_Bound_System_Object_">Bound(object)</a> with the same key in the same task.
The timing starts on the first (odd-numbered) call to <a class="xref" href="Hi.Common.ConcurrentTimeCounter.html#Hi_Common_ConcurrentTimeCounter_Bound_System_Object_">Bound(object)</a> and stops on the second (even-numbered) call,
accumulating statistics for each key.</p>
</div>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Common_ConcurrentTimeCounter_Bound_" data-uid="Hi.Common.ConcurrentTimeCounter.Bound*"></a>
<h3 id="Hi_Common_ConcurrentTimeCounter_Bound_System_Object_" data-uid="Hi.Common.ConcurrentTimeCounter.Bound(System.Object)">
Bound(object)
</h3>
<div class="markdown level1 summary"><p>Marks a boundary for time measurement for the specified key.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void Bound(object key)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>key</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>The key to identify this measurement</p>
</dd>
</dl>
<h4 class="section" id="Hi_Common_ConcurrentTimeCounter_Bound_System_Object__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>This method acts as both the start and end point for timing:</p>
<ul>
<li>On first call with a key, starts the timer</li>
<li>On second call with the same key, stops the timer and records the elapsed time</li>
<li>Subsequent calls alternate between starting and stopping</li>
</ul>
</div>
<a id="Hi_Common_ConcurrentTimeCounter_Pass_" data-uid="Hi.Common.ConcurrentTimeCounter.Pass*"></a>
<h3 id="Hi_Common_ConcurrentTimeCounter_Pass_System_Object_" data-uid="Hi.Common.ConcurrentTimeCounter.Pass(System.Object)">
Pass(object)
</h3>
<div class="markdown level1 summary"><p>Cancels an active time measurement for the specified key without recording the elapsed time.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void Pass(object key)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>key</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>The key identifying the measurement to cancel</p>
</dd>
</dl>
<h4 class="section" id="Hi_Common_ConcurrentTimeCounter_Pass_System_Object__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If timing has not been started for the key, this method has no effect.
This is useful when you want to abort a measurement without affecting statistics.</p>
</div>
<a id="Hi_Common_ConcurrentTimeCounter_Reset_" data-uid="Hi.Common.ConcurrentTimeCounter.Reset*"></a>
<h3 id="Hi_Common_ConcurrentTimeCounter_Reset" data-uid="Hi.Common.ConcurrentTimeCounter.Reset">
Reset()
</h3>
<div class="markdown level1 summary"><p>Resets all time measurements across all tasks.
Clears all accumulated statistics and counters.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void Reset()</code></pre>
</div>
<a id="Hi_Common_ConcurrentTimeCounter_Show_" data-uid="Hi.Common.ConcurrentTimeCounter.Show*"></a>
<h3 id="Hi_Common_ConcurrentTimeCounter_Show" data-uid="Hi.Common.ConcurrentTimeCounter.Show">
Show()
</h3>
<div class="markdown level1 summary"><p>Displays all accumulated time measurements to the console.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void Show()</code></pre>
</div>
<h4 class="section" id="Hi_Common_ConcurrentTimeCounter_Show_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>For each task and key, shows the count of measurements, total time, and average time.</p>
</div>
<a id="Hi_Common_ConcurrentTimeCounter_ShowExt_" data-uid="Hi.Common.ConcurrentTimeCounter.ShowExt*"></a>
<h3 id="Hi_Common_ConcurrentTimeCounter_ShowExt_System_Int32_" data-uid="Hi.Common.ConcurrentTimeCounter.ShowExt(System.Int32)">
ShowExt(int)
</h3>
<div class="markdown level1 summary"><p>Displays time measurements and resets counters periodically based on call frequency.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void ShowExt(int gap)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>gap</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>The number of calls to this method before showing results and resetting</p>
</dd>
</dl>
<h4 class="section" id="Hi_Common_ConcurrentTimeCounter_ShowExt_System_Int32__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>This method increments an internal counter with each call. When the counter reaches
the specified gap value, it displays all measurements, resets the counters, and
resets the internal counter to zero.</p>
</div>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>