3

すべて、次のコードを取得してください。

Task<bool> generateStageAsyncTask = null;
generateStageAsyncTask = Task.Factory.StartNew<bool>(() =>
{
    return GenerateStage(ref workbook);
}, this.token,
   TaskCreationOptions.LongRunning,
   TaskScheduler.Default);

// Run core asynchroniously.
bool bGenerationSuccess = false;
try
{
    bGenerationSuccess = await generateStageAsyncTask;
}
catch (OperationCancelledException e)
{
    // Script cancellation.
    result.RunSucceeded = true;
    result.ResultInfo = "Script processing cancelled at the users request.";
    return result;
}

メソッド内から、次のようGenerateStageに a をテストして再スローOperationCancelledExceptionします

try
{
    ...
}
catch (Exception e)
{
    if (e.GetType() == typeof(OperationCanceledException))
        throw e;
    else // <- Here it is saying that the thrown exception is unhandled.
    {
        // Do other stuff...
    }
}

しかし、上記の指定された行では、再スローされた例外が処理されないことを示しています。上記の最初のコード スニペットでmy を適切な でラップしていますが、再スローされた例外がトラップされないのはなぜですか?awaittry/catchtry/catch

4

1 に答える 1

2

これは、Microsoft Connect からの同じ問題に対するサポート リクエストです。で「Just My Code」を無効にする

Tools-> Options-> Debugging->General

問題を解決します。

于 2013-02-12T19:37:30.907 に答える