次のシナリオを検討してください。
オブジェクトを返すタスクがあります。これは次のタイプであるとしましょう。
class A
{
string success;
}
これで、タスクの本体は次のようになります。
{
return new A() { success = "yes" }
}
このタスクの外側は、それが継続的なタスクであるか何かであるかは関係ありません。重要なのは、そのタスクから戻ったときに、この返されたオブジェクトをtask.Result.statusで読み取ることができるということです。
私が抱えている問題は、try / catchブロック内でその種類のオブジェクトを返したい場合、task.Result.statusがnullであり、task.ResultがAggregatedExceptionタイプであるということです。したがって、たとえば:
//(Task body)
{
{
try
{
//something throwing exception
}
catch(Exception exc)
{
return new A() { success = "yes" }
}
}
現在受け取っているAggregatedExceptionの代わりに、実行がそのタスクから戻ったときに、catchブロックに返されるオブジェクトを取得する方法を探しています。
「なぜ欲しいのか」「何がポイントなのか」などの通常のフォーラムの「回答」にはご遠慮ください。そのような回答には興味がありません。
それができず、事実を知っている場合(おそらく、例外をスローするときのタスクは、何があっても常にAggregatedExceptionを返します)、とても簡単に教えてください。一方、それが可能であれば、私はそれをどのように達成できるかを評価したいと思います。
ルーカス