gpt4 book ai didi

c# - ContinueWith 不处理异步回调吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:17:51 26 4
gpt4 key购买 nike

我看到了 Stephen Cleary 关于 Startnew being dangerous 的博客以及如何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(); });

关于c# - ContinueWith 不处理异步回调吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36657725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com