Use a cached canceled task in ValueTask (dotnet/corefx#27967)
authorStephen Toub <stoub@microsoft.com>
Mon, 12 Mar 2018 19:25:17 +0000 (15:25 -0400)
committerJan Kotas <jkotas@microsoft.com>
Mon, 12 Mar 2018 22:02:50 +0000 (15:02 -0700)
commit3af716ef2cc8d9bcfd9d11998b908994f4d4ceda
tree7e46cf500dbb681a4514e533f7f8b0bd2ebdbc8f
parent7c7e34319a588402329a1cb4fe195dfe3906a348
Use a cached canceled task in ValueTask (dotnet/corefx#27967)

When an IValueTaskSource reports it completed due to cancellation by the time we AsTask it, we can use a cached canceled task if a) this is the netstandard build, or b) this is the netcoreapp build and it reported cancellation but threw an exception other than a cancellation exception.  We cache the non-generic one in a readonly static, since there's only one of them, but lazily cache the generic one.

Signed-off-by: dotnet-bot-corefx-mirror <dotnet-bot@microsoft.com>
src/mscorlib/shared/System/Threading/Tasks/ValueTask.cs