c# - 带有 ContinueWith 的 TaskCanceledException

标签 c# .net task

我一直在试图弄清楚为什么我会因为一些最近开始行为不端的异步代码而收到 TaskCanceledException。我已经将我的问题简化为一个让我挠头的小代码片段:

static void Main(string[] args)
{
    RunTest();
}

private static void RunTest()
{
    Task.Delay(1000).ContinueWith(t => Console.WriteLine("{0}", t.Exception), TaskContinuationOptions.OnlyOnFaulted).Wait();
}

据我所知,这应该只是暂停一秒钟然后关闭。不会调用 ContinueWith (这仅适用于我的实际用例)。但是,相反,我收到了 TaskCanceledException,我不知道这是从哪里来的!

最佳答案

您使用了错误的 taskcontinuation 选项:

请参阅以下链接:https://msdn.microsoft.com/en-us/library/system.threading.tasks.taskcontinuationoptions%28v=vs.110%29.aspx

它说 :
指定仅当其前件抛出未处理的异常时才应安排延续任务。此选项对多任务延续无效。

关于c# - 带有 ContinueWith 的 TaskCanceledException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28633871/

相关文章:

.net - 我仍然可以在 Visual Studio 2010 中以 .NET Framework 2.0 为目标吗?

c# - .NET Remoting 客户端配置创建本地对象,而不是远程对象

c# - 在 Lambda 中实现 "where in"子句?

c# - Windows Phone 8.1 MVVM设置 View 的 View 模型

c# - SqlDataReader GetChar(int index) 方法

c# - HttpHandler isReusable,true 或 false 一次发送约 75 封电子邮件

c# - 为什么我的控制台应用程序立即消失

java - 每次迭代为任务安排一个新日期 - Java Spring

从 cron 任务构建项目

c# - 从 QueueUserWorkItem 移动到任务