8

この質問に答えているときに、例外の処理中に「カーソル」を移動しようとしたときに、次のダイアログが表示されることに気付きました。

次のステートメントをこの場所に設定できません。コールスタックをアンワインドしようとして失敗しました。

次のシナリオでは、巻き戻しはできません。

  1. デバッグは、ジャスト イン タイム デバッグを介して開始されました。
  2. 巻き戻しが進行中です
  3. System.StackOverflowException または System.Threading.ThreadAbortException 例外がスローされました。

アンワインドとは正確には何ですか?

4

4 に答える 4

19

それは私です!

いいえ、このコンテキストでは通常、スタックをステップ (「後方」/「上方」) に進み、目的のレベルに戻るまで連続するフレームを削除するプロセスを指します。典型的なスタックは (もちろん) 構造が非常に直線的で、フレームは互いに端から端まで積み重ねられているため、文字通りの巻き戻しはあまり行われていませんが、それが呼ばれるものです。

このウィキペディアのページに詳細があります。

于 2010-01-05T11:19:34.443 に答える
2

巻き戻しは、スタックを上に移動するだけです。

于 2010-01-05T11:20:21.797 に答える
1

これは、例外を処理できる catch ブロックを持つメソッドを見つけるために、CLR がスタックを「巻き戻し」ている場所です。つまり、現在のメソッドが例外を処理しない場合は、それを呼び出したメソッドに戻って、例外が処理されるかどうかを確認します。 . これは、例外を処理するメソッドが見つかるか、アプリケーション レベルのエラー処理に到達するまで繰り返されます。

于 2010-01-05T11:27:19.003 に答える
0

これは、障害のあるスレッドがあることを意味します。または、スタックがいっぱいでスタック フレームが作成されていないことが原因である可能性があります。CLR は、この状況で現在のコンテキストをアンワインドすることを選択します。

于 2010-01-05T11:23:17.103 に答える