ContinueWith不处理异步回调吗?

时间:2016-04-15 22:18:00

标签: c# async-await c#-5.0

我看到Stephen Cleary关于Startnew being dangerous以及continuewith is also dangerous的博客。我想在这里使用它来避免最后只是为了在异常情况下调用NSubstitute而尝试编写。我发现测试通过了它应该没有,然后注意到异常被抛出但它没有让它脱离测试信号nunit。

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

@using (Ajax.BeginForm("AddNewsletterEmail", "NewsletterController", new AjaxOptions() { UpdateTargetId = "email", HttpMethod = "Post"}))
{
    <div class="left-side">
        <div class="widget widget-footer news-letter-signup">
            <form class="subs-form">
                <div class="email-field">
                    @Html.TextBoxFor(model => model.Email, new { placeholder = "Enter you email address" })
                    <button type="submit"><i class="fa fa-paper-plane-o"></i></button>
                </div>
            </form>
        </div>
    </div>
}

1 个答案:

答案 0 :(得分:3)

ContinueWith无法理解async lambdas。除了传递任务调度程序之外,您还需要使用Unwrap

  

我想在这里使用它来避免在最后只是为了在异常的情况下调用NSubstitute来编写一个尝试。

我不明白这个要求。为什么这不起作用?

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