ミニ プロファイラーのバージョン 1.9 で、非同期 DB 呼び出しの SQL タイミングをプロファイラーの結果に取得する方法を見つけました。基本的にContinueWith
、非同期タスクに a を追加し、非同期アクションを開始したステップにすべての 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 タイミングで表示するために必要なことはありますか?