ASP.NET Core 中的 ContinueWith 我应该使用哪个任务调度程序
Which task scheduler should I use for ContinueWith in ASP.NET Core
我编写了一个简单的去抖器,用于 ASP.NET Core 5(检测配置文件的更改)。这将在 Startup
class 内使用。效果不错。
但是我收到分析器警告:
Do not create tasks without passing a TaskScheduler csharp(CA2008)
问题代码:
Task.Delay(TimeSpan.FromSeconds(2)).ContinueWith(
task => someAction(),
cancellationToken
);
我应该使用以下哪些选项,它们有何不同?
Task.Delay(TimeSpan.FromSeconds(2)).ContinueWith(
task => someAction(),
cancellationToken,
TaskContinuationOptions.None,
TaskScheduler.FromCurrentSynchronizationContext() // <---
);
Task.Delay(TimeSpan.FromSeconds(2)).ContinueWith(
task => someAction(),
cancellationToken,
TaskContinuationOptions.None,
TaskScheduler.Default // <---
);
根据 this,ASP.NET 核心没有 SynchronizationContext
。
所以根据@MatthewWatson 上面的评论,可以使用TaskScheduler.Default
。
我编写了一个简单的去抖器,用于 ASP.NET Core 5(检测配置文件的更改)。这将在 Startup
class 内使用。效果不错。
但是我收到分析器警告:
Do not create tasks without passing a TaskScheduler csharp(CA2008)
问题代码:
Task.Delay(TimeSpan.FromSeconds(2)).ContinueWith(
task => someAction(),
cancellationToken
);
我应该使用以下哪些选项,它们有何不同?
Task.Delay(TimeSpan.FromSeconds(2)).ContinueWith(
task => someAction(),
cancellationToken,
TaskContinuationOptions.None,
TaskScheduler.FromCurrentSynchronizationContext() // <---
);
Task.Delay(TimeSpan.FromSeconds(2)).ContinueWith(
task => someAction(),
cancellationToken,
TaskContinuationOptions.None,
TaskScheduler.Default // <---
);
根据 this,ASP.NET 核心没有 SynchronizationContext
。
所以根据@MatthewWatson 上面的评论,可以使用TaskScheduler.Default
。