C#マルチスレッドプログラミングでは、方法A()
がメソッドB()
を新しいスレッド、例えば、スタックトレースは、順番に方法B()
の実行トリガ方法A()
の呼び出しパスについては何も知らないB()
メソッド内言い換えれば複数のスレッド間で完全なスタックトレースを確認する方法はありますか?
Task A()
{
// ...
// I want B to run in parallel, without A() waiting for it.
Task.Factory.StartNew(B);
}
void B()
{
// I attach a debugger here to look at the Call Stack.
// But that is empty and I can't see that A() actually called it (logically).
// Also Environment.StackTrace is pretty much empty of that path.
}
:このようなものを使用します。
完全な論理スタックトレースを見る方法はありますか。例外の場合はB()
にありますので、それは実質的にA()
ということを知ることができますか?
@SimonPrice、それはマルチスレッドプログラムを一般的にデバッグする方法です。 OPは、そのスレッドが例外をスローすると、どのスレッド(およびそのポイントへの呼び出しスタック)が別のスレッドを開始したか/スケジュールされたタスクを見つけ出す方法を探しています。もっと具体的なものは何ですか? –
私は詳細を質問で更新しました。 Visual Studioでこのシナリオを簡単に作成して、自分で確認することができます。 – Paymon
UWPアプリケーションでこれをテストしています。 – Paymon