ContinueWith 不处理异步回调吗?

Does ContinueWith not handle Async callbacks?

我看到了 Stephen Cleary 关于 Startnew being dangerous and how continuewith is also dangerous 的博客。我想在这里使用它来避免在出现异常的情况下不得不编写 try finally 来调用 NSubstitute。我发现测试在不应该通过的时候通过了,然后注意到抛出了异常,但它没有通过测试以向 nunit 发出信号。

ContinueWith 在异步函数方面是否与 Task.Startnew 类似?我注意到这个简化的等效项不会在 Nunit 3 中抛出内部异常。

[Test]
public async Task SimpleTest()
{
    await Task.Delay(10).ContinueWith( async t =>
    {
        await Task.Run(()=>{throw new Exception();});
    });
}

ContinueWith 不理解 async lambda。除了传递任务计划程序之外,您还需要使用 Unwrap

I wanted to use it here to avoid having to write a try finally just to make a call to NSubstitute in the case of an exception.

我不明白这个要求。为什么这行不通?

await Task.Delay(10);
await Task.Run(() => { throw new Exception(); });