deploy webservice static-file routing for docsite folder URLs, per-instance step-cache db, and constant-height panel title bars.

This commit is contained in:
2026-08-27 14:51:37 +08:00
parent 1fc510af5e
commit 2a98ae7556
1468 changed files with 182837 additions and 18888 deletions
@@ -173,6 +173,9 @@ Class CubeTree
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Machining.SweptableUtil.html#Hi_Machining_SweptableUtil_AddBySweepingVolume_Hi_Cbtr_CubeTree_Hi_Machining_IGetSweptable_Hi_Geom_Mat4d_Hi_Geom_Mat4d_System_Double_System_Double_System_Boolean_System_Boolean_">SweptableUtil.AddBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Machining.SweptableUtil.html#Hi_Machining_SweptableUtil_RemoveBySweepingVolume_Hi_Cbtr_CubeTree_Hi_Machining_IGetSweptable_Hi_Geom_Mat4d_Hi_Geom_Mat4d_System_Double_System_Double_System_Boolean_System_Boolean_">SweptableUtil.RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool)</a>
</div>
@@ -493,6 +496,39 @@ Errors relative to the input geometry are distributed at sharp edges and curved
<a id="Hi_Cbtr_CubeTree_IsDisposed_" data-uid="Hi.Cbtr.CubeTree.IsDisposed*"></a>
<h3 id="Hi_Cbtr_CubeTree_IsDisposed" data-uid="Hi.Cbtr.CubeTree.IsDisposed">
IsDisposed
</h3>
<div class="markdown level1 summary"><p>Gets a value indicating whether this tree has been disposed.
All native-backed members become no-ops afterwards (value getters return neutral defaults).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsDisposed { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Resolution_" data-uid="Hi.Cbtr.CubeTree.Resolution*"></a>
<h3 id="Hi_Cbtr_CubeTree_Resolution" data-uid="Hi.Cbtr.CubeTree.Resolution">
@@ -595,6 +631,144 @@ Sum of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TrisCacheMb"
</h2>
<a id="Hi_Cbtr_CubeTree_Add_" data-uid="Hi.Cbtr.CubeTree.Add*"></a>
<h3 id="Hi_Cbtr_CubeTree_Add_Hi_Cbtr_CachedTris_System_Double_System_Boolean_System_Boolean_" data-uid="Hi.Cbtr.CubeTree.Add(Hi.Cbtr.CachedTris,System.Double,System.Boolean,System.Boolean)">
Add(CachedTris, double, bool, bool)
</h3>
<div class="markdown level1 summary"><p>Boolean-union counterpart of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_Substract_Hi_Cbtr_CachedTris_System_Double_System_Boolean_System_Boolean_">Substract(CachedTris, double, bool, bool)</a>.
Using BufferedTris is more efficient than NativeStl.
If the resolution of the addition region differs from the body's resolution, the lower resolution is applied to that region.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UnmanagedAddition Add(CachedTris adderBufferedTris, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveAdd = false)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>adderBufferedTris</code> <a class="xref" href="Hi.Cbtr.CachedTris.html">CachedTris</a></dt>
<dd><p>Addition geometry</p>
</dd>
<dt><code>preferredCubeWidth</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The preferred cube width for the operation.</p>
</dd>
<dt><code>isBuildContactContours</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>If true, the returned Addition contains contour groups of the newly created surface, which can be used for further analysis.</p>
</dd>
<dt><code>isAggressiveAdd</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>If true, uses aggressive adding mode.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.UnmanagedAddition.html">UnmanagedAddition</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Add_" data-uid="Hi.Cbtr.CubeTree.Add*"></a>
<h3 id="Hi_Cbtr_CubeTree_Add_Hi_Cbtr_GeomBoolCache_System_Boolean_System_Boolean_" data-uid="Hi.Cbtr.CubeTree.Add(Hi.Cbtr.GeomBoolCache,System.Boolean,System.Boolean)">
Add(GeomBoolCache, bool, bool)
</h3>
<div class="markdown level1 summary"><p>Adds (boolean union) a geometry to the cube tree using a geometry boolean cache.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UnmanagedAddition Add(GeomBoolCache geomBoolCache, bool isBuildContactContours = false, bool isAggressiveAdd = false)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>geomBoolCache</code> <a class="xref" href="Hi.Cbtr.GeomBoolCache.html">GeomBoolCache</a></dt>
<dd><p>The geometry boolean cache containing the geometry to add.</p>
</dd>
<dt><code>isBuildContactContours</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>If true, the returned Addition will contain the contours of the newly created surface.</p>
</dd>
<dt><code>isAggressiveAdd</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>If true, uses aggressive adding mode.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.UnmanagedAddition.html">UnmanagedAddition</a></dt>
<dd><p>The result of the addition operation.</p>
</dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Add_" data-uid="Hi.Cbtr.CubeTree.Add*"></a>
<h3 id="Hi_Cbtr_CubeTree_Add_Hi_Geom_NativeStl_System_Double_System_Boolean_System_Boolean_" data-uid="Hi.Cbtr.CubeTree.Add(Hi.Geom.NativeStl,System.Double,System.Boolean,System.Boolean)">
Add(NativeStl, double, bool, bool)
</h3>
<div class="markdown level1 summary"><p>Boolean-union counterpart of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_Substract_Hi_Geom_NativeStl_System_Double_System_Boolean_System_Boolean_">Substract(NativeStl, double, bool, bool)</a>.
Same functionality as Add(CachedTris,...). Less efficient due to the additional step of converting to <a class="xref" href="Hi.Cbtr.CachedTris.html">CachedTris</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UnmanagedAddition Add(NativeStl adderStl, double preferredCubeWidth = 0, bool isBuildContactContours = false, bool isAggressiveAdd = false)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>adderStl</code> <a class="xref" href="Hi.Geom.NativeStl.html">NativeStl</a></dt>
<dd></dd>
<dt><code>preferredCubeWidth</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
<dt><code>isBuildContactContours</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dt><code>isAggressiveAdd</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.UnmanagedAddition.html">UnmanagedAddition</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_CleanCache_" data-uid="Hi.Cbtr.CubeTree.CleanCache*"></a>
<h3 id="Hi_Cbtr_CubeTree_CleanCache" data-uid="Hi.Cbtr.CubeTree.CleanCache">
@@ -682,10 +856,78 @@ Sum of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TrisCacheMb"
<a id="Hi_Cbtr_CubeTree_DetachAttachments_" data-uid="Hi.Cbtr.CubeTree.DetachAttachments*"></a>
<h3 id="Hi_Cbtr_CubeTree_DetachAttachments" data-uid="Hi.Cbtr.CubeTree.DetachAttachments">
DetachAttachments()
</h3>
<div class="markdown level1 summary"><p>Detach-ALL: nulls every node's attachment WITHOUT erasing nodes from those attachments'
node maps — a fast reset of all colouring for when the attached attachments are about to
be disposed (their own disposal clears their maps). Runs under the write gate so it also
acts as a render barrier (in-flight renders drain, new renders read null), letting the
detached attachments be freed in the background with no render holding a stale pointer.
The caller MUST dispose the detached attachments. Must NOT be called while holding this
tree's read gate.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void DetachAttachments()</code></pre>
</div>
<a id="Hi_Cbtr_CubeTree_DetachUnderWriteGate_" data-uid="Hi.Cbtr.CubeTree.DetachUnderWriteGate*"></a>
<h3 id="Hi_Cbtr_CubeTree_DetachUnderWriteGate_System_Collections_Generic_IReadOnlyCollection_Hi_Cbtr_CbtrPickable__" data-uid="Hi.Cbtr.CubeTree.DetachUnderWriteGate(System.Collections.Generic.IReadOnlyCollection{Hi.Cbtr.CbtrPickable})">
DetachUnderWriteGate(IReadOnlyCollection&lt;CbtrPickable&gt;)
</h3>
<div class="markdown level1 summary"><p>Targeted detach: under the write gate (render barrier), nulls node-&gt;attachment for ONLY
the given attachments' nodes (idempotent ==this guard; never touches other attachments).
After this returns, dispose them in the background — the barrier guarantees no render
still holds a stale pointer. Must NOT be called while holding this tree's read gate.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void DetachUnderWriteGate(IReadOnlyCollection&lt;CbtrPickable&gt; attachments)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>attachments</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlycollection-1">IReadOnlyCollection</a>&lt;<a class="xref" href="Hi.Cbtr.CbtrPickable.html">CbtrPickable</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_Diff_" data-uid="Hi.Cbtr.CubeTree.Diff*"></a>
<h3 id="Hi_Cbtr_CubeTree_Diff_Hi_Geom_NativeStl_System_Double_Hi_Coloring_RangeColorRule_System_IProgress_System_Object__" data-uid="Hi.Cbtr.CubeTree.Diff(Hi.Geom.NativeStl,System.Double,Hi.Coloring.RangeColorRule,System.IProgress{System.Object})">
Diff(NativeStl, double, RangeColorRule, IProgress&lt;object&gt;)
<h3 id="Hi_Cbtr_CubeTree_Diff_Hi_Geom_NativeStl_System_Double_Hi_Coloring_RangeColorRule_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Cbtr.CubeTree.Diff(Hi.Geom.NativeStl,System.Double,Hi.Coloring.RangeColorRule,System.IProgress{Hi.Common.Messages.IMessage})">
Diff(NativeStl, double, RangeColorRule, IProgress&lt;IMessage&gt;)
</h3>
@@ -694,7 +936,7 @@ Sum of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TrisCacheMb"
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ConcurrentBag&lt;DiffAttachment&gt; Diff(NativeStl idealGeom, double diffRadius, RangeColorRule diffRangeColorRule, IProgress&lt;object&gt; progress = null)</code></pre>
<pre><code class="lang-csharp hljs">public ConcurrentBag&lt;DiffAttachment&gt; Diff(NativeStl idealGeom, double diffRadius, RangeColorRule diffRangeColorRule, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -708,7 +950,7 @@ Sum of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TrisCacheMb"
<dt><code>diffRangeColorRule</code> <a class="xref" href="Hi.Coloring.RangeColorRule.html">RangeColorRule</a></dt>
<dd><p>The color rule for visualizing differences.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for the operation.</p>
</dd>
</dl>
@@ -821,6 +1063,82 @@ Sum of <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_TrisCacheMb"
<a id="Hi_Cbtr_CubeTree_DisposeBackground_" data-uid="Hi.Cbtr.CubeTree.DisposeBackground*"></a>
<h3 id="Hi_Cbtr_CubeTree_DisposeBackground" data-uid="Hi.Cbtr.CubeTree.DisposeBackground">
DisposeBackground()
</h3>
<div class="markdown level1 summary"><p>Frees the native cube tree on a background task. Disposals are serialized: if a
previous background disposal has not finished, this one waits for it. Returns the
task representing this disposal (see <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_WaitForPendingDisposals">WaitForPendingDisposals()</a> to drain).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Task DisposeBackground()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.tasks.task">Task</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_DisposeBackground_" data-uid="Hi.Cbtr.CubeTree.DisposeBackground*"></a>
<h3 id="Hi_Cbtr_CubeTree_DisposeBackground_System_Collections_Generic_IReadOnlyCollection_System_IDisposable__" data-uid="Hi.Cbtr.CubeTree.DisposeBackground(System.Collections.Generic.IReadOnlyCollection{System.IDisposable})">
DisposeBackground(IReadOnlyCollection&lt;IDisposable&gt;)
</h3>
<div class="markdown level1 summary"><p>Enqueues disposal of objects retired alongside a tree (typically its attachments) on
the SAME serialized chain as <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_DisposeBackground">DisposeBackground()</a>, so there is a single
drain point (<a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_WaitForPendingDisposals">WaitForPendingDisposals()</a>). Disposing a <a class="xref" href="Hi.Cbtr.CbtrPickable.html">CbtrPickable</a>
now clears its (possibly huge) attached node map — O(nodes) — which must not run on the
hot path. Enqueue the owning tree's <a class="xref" href="Hi.Cbtr.CubeTree.html#Hi_Cbtr_CubeTree_DisposeBackground">DisposeBackground()</a> <em>first</em> so the
gated tree teardown (which waits out in-flight renders) runs before its attachments are freed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Task DisposeBackground(IReadOnlyCollection&lt;IDisposable&gt; disposables)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>disposables</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlycollection-1">IReadOnlyCollection</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a>&gt;</dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.tasks.task">Task</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_ExpandToBox3d_" data-uid="Hi.Cbtr.CubeTree.ExpandToBox3d*"></a>
<h3 id="Hi_Cbtr_CubeTree_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.Cbtr.CubeTree.ExpandToBox3d(Hi.Geom.Box3d)">
@@ -1069,8 +1387,8 @@ A triangle take 15 double.</p>
<a id="Hi_Cbtr_CubeTree_NewWithDefectInfos_" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos*"></a>
<h3 id="Hi_Cbtr_CubeTree_NewWithDefectInfos_Hi_Geom_NativeStl_System_Double_System_Threading_CancellationToken_System_IProgress_System_Object__" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos(Hi.Geom.NativeStl,System.Double,System.Threading.CancellationToken,System.IProgress{System.Object})">
NewWithDefectInfos(NativeStl, double, CancellationToken, IProgress&lt;object&gt;)
<h3 id="Hi_Cbtr_CubeTree_NewWithDefectInfos_Hi_Geom_NativeStl_System_Double_System_Threading_CancellationToken_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos(Hi.Geom.NativeStl,System.Double,System.Threading.CancellationToken,System.IProgress{Hi.Common.Messages.IMessage})">
NewWithDefectInfos(NativeStl, double, CancellationToken, IProgress&lt;IMessage&gt;)
</h3>
@@ -1079,7 +1397,7 @@ A triangle take 15 double.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static (CubeTree cubeTree, List&lt;CubeTree.DefectNodeInfo&gt; defectInfos) NewWithDefectInfos(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress&lt;object&gt; progress)</code></pre>
<pre><code class="lang-csharp hljs">public static (CubeTree cubeTree, List&lt;CubeTree.DefectNodeInfo&gt; defectInfos) NewWithDefectInfos(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress&lt;IMessage&gt; messageProgress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -1090,7 +1408,7 @@ A triangle take 15 double.</p>
<dd></dd>
<dt><code>token</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
</dl>
@@ -1112,8 +1430,8 @@ A triangle take 15 double.</p>
<a id="Hi_Cbtr_CubeTree_NewWithDefectInfos_" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos*"></a>
<h3 id="Hi_Cbtr_CubeTree_NewWithDefectInfos_Hi_Geom_Stl_System_Double_System_Threading_CancellationToken_System_IProgress_System_Object__" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos(Hi.Geom.Stl,System.Double,System.Threading.CancellationToken,System.IProgress{System.Object})">
NewWithDefectInfos(Stl, double, CancellationToken, IProgress&lt;object&gt;)
<h3 id="Hi_Cbtr_CubeTree_NewWithDefectInfos_Hi_Geom_Stl_System_Double_System_Threading_CancellationToken_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Cbtr.CubeTree.NewWithDefectInfos(Hi.Geom.Stl,System.Double,System.Threading.CancellationToken,System.IProgress{Hi.Common.Messages.IMessage})">
NewWithDefectInfos(Stl, double, CancellationToken, IProgress&lt;IMessage&gt;)
</h3>
@@ -1122,7 +1440,7 @@ A triangle take 15 double.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static (CubeTree cubeTree, List&lt;CubeTree.DefectNodeInfo&gt; defectInfos) NewWithDefectInfos(Stl stl, double preferredGridWidth, CancellationToken token, IProgress&lt;object&gt; progress)</code></pre>
<pre><code class="lang-csharp hljs">public static (CubeTree cubeTree, List&lt;CubeTree.DefectNodeInfo&gt; defectInfos) NewWithDefectInfos(Stl stl, double preferredGridWidth, CancellationToken token, IProgress&lt;IMessage&gt; messageProgress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -1133,7 +1451,7 @@ A triangle take 15 double.</p>
<dd></dd>
<dt><code>token</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd></dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
</dl>
@@ -1536,6 +1854,39 @@ This function put <code class="paramref">src</code> to the nodes that contain nu
<a id="Hi_Cbtr_CubeTree_WaitForPendingDisposals_" data-uid="Hi.Cbtr.CubeTree.WaitForPendingDisposals*"></a>
<h3 id="Hi_Cbtr_CubeTree_WaitForPendingDisposals" data-uid="Hi.Cbtr.CubeTree.WaitForPendingDisposals">
WaitForPendingDisposals()
</h3>
<div class="markdown level1 summary"><p>A task that completes when all queued background disposals have finished.
Await this at application shutdown before the native dll is unloaded.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Task WaitForPendingDisposals()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.tasks.task">Task</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_WriteFile_" data-uid="Hi.Cbtr.CubeTree.WriteFile*"></a>
<h3 id="Hi_Cbtr_CubeTree_WriteFile_System_String_" data-uid="Hi.Cbtr.CubeTree.WriteFile(System.String)">