在迷你探查器 1.9 版中,我找到了一种将异步 DB 调用的 SQL 计时纳入探查器结果的方法。基本上,我在ContinueWith
异步任务中添加了一个,然后将所有 SQL 计时添加到启动异步操作的步骤中:
foreach (var sqlTiming in completedResult.SqlTimings)
{
currentStep.AddSqlTiming(sqlTiming);
}
但是,这在 2.0.2 中不再有效——那些 SQL 计时就消失了。似乎有一种新方法可以完全满足我的要求(source,第 487 行):
/// <summary>
/// Adds <paramref name="externalProfiler"/>'s <see cref="Timing"/> hierarchy to this profiler's current Timing step,
/// allowing other threads, remote calls, etc. to be profiled and joined into this profiling session.
/// </summary>
public static void AddProfilerResults(this MiniProfiler profiler, MiniProfiler externalProfiler)
{
...
所以看起来这就是我现在应该做的:
MiniProfiler.Current.AddProfilerResults(profilerFromAsyncTask);
但是,虽然这不会引发错误,但它似乎根本没有给结果添加任何东西。我可以通过以下方式获得出现在步骤中的步骤:
currentStep.AddChild(profilerFromAsyncTask.Root)
但是,这仍然会丢弃 SQL 计时,并导致启动异步任务的步骤出现负数。
我需要做些什么来让 AddProfilerResults 的结果与 SQL 计时一起出现吗?