バリアを使用する単純な C# の例を作成しましたが、関数の 1 つに例外をスローしましたが、予期しない結果が得られました
phase 1 of DoWork1
phase 2 of DoWork2
phase 3 of DoWork3
Current phase 0
phase 2 of DoWork3
phase 2 of DoWork1
phase 3 of DoWork2
//so far everything is fine, lets throw an exception now
DoWork1 canceled
phase3 of DoWorn1
//end
コードでわかるように、DoWork1
メソッドで例外をスローし、3つのメソッドすべてが例外を処理することを期待していましたが、最初のメソッドのみが例外を処理することを期待していました.2番目の問題は、最初のメソッドのみが「フェーズ3 bla bla」を出力し、3つすべてを期待したコンソールに出力します。なぜこれが起こるのか誰か説明してもらえますか
コードは少し長いですが、そのほとんどは単なるコピペです