スレッドがたくさんあるマルチスレッドのC#「コンソール」アプリケーションがあります。すべてのスレッドが終了します。アプリケーションが正常に終了する時間の90%。しかし、アプリケーションのコピーが残っている時間の10%は残っています:コンソールはまだ開いています。すべてのスレッドが終了した後にC#プロセスが残っている
私はVisual Studio 2010でこれに接続し、中断するためにbreakを使用し、2つの「空の」スタックフレームを表示します.1つはメイン用、もう1つはアプリケーション作成スレッド用です。どちらもスタック上に何もありません。 Visual Studioでは、これらのスレッドのいずれかをクリックすると「ソースコードはスレッドで使用できません」というメッセージが表示され、「dissambled code view」リンクが表示されます。私はそれをクリックして、 "逆アセンブリコードはこのスレッドで利用できません"と言う。
私が間違っていると思われるアイデアはありますか?
デバッガオプションで[マイコードだけを無効にして、もう一度やり直してください。 – SLaks
Environment.Exitを呼び出して明示的にプロセスを終了していますか? –
これは私がすでに持っていた問題のようですが、私の場合はデバッグを一時停止する方法がありませんでした! + Fav。ところで、すべてのスレッドを正しくフォークして結合しますか?保留中のスレッドのスタックトレースをマネージコードまで調べることはできますか?たとえば、セマフォー内でスレッドがブロックされている可能性があります。セマフォーは部分的には管理されていません。 –