C产品在市场上有哪些独特优势?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2512个文字,预计阅读时间需要11分钟。
起因:最近有个小兄弟提出了一个问题,就是在使用 .NET Core 的 BackgroundService 时,对应的 ExecuteAsync 方法中写如下代码,会导致程序一直卡在当前方法,不会继续执行。
代码示例:csharppublic async Task ExecuteAsync(CancellationToken stoppingToken){ while (!stoppingToken.IsCancellationRequested) { // 模拟长时间运行的任务 await Task.Delay(10000); }}
起因最近有个小伙伴提出了一个问题,就是在使用.net core的BackgroundService的时候,对应的ExecuteAsync方法里面写如下代码,会使程序一直卡在当前方法,不会继续执行,代码如下:
public class BGService : BackgroundService
{
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
while (true)
{
Thread.Sleep(1000);
}
}
}
其实这个问题我们还是对Task和异步执行过程理解不够深入导致的,所以本篇文章笔者就以这个问题来对Task和异步方法执行过程来做源码的探究。
PS:本文只贴出重要的代码和注释,不是其全部的代码,读者多关注下注释。
本文共计2512个文字,预计阅读时间需要11分钟。
起因:最近有个小兄弟提出了一个问题,就是在使用 .NET Core 的 BackgroundService 时,对应的 ExecuteAsync 方法中写如下代码,会导致程序一直卡在当前方法,不会继续执行。
代码示例:csharppublic async Task ExecuteAsync(CancellationToken stoppingToken){ while (!stoppingToken.IsCancellationRequested) { // 模拟长时间运行的任务 await Task.Delay(10000); }}
起因最近有个小伙伴提出了一个问题,就是在使用.net core的BackgroundService的时候,对应的ExecuteAsync方法里面写如下代码,会使程序一直卡在当前方法,不会继续执行,代码如下:
public class BGService : BackgroundService
{
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
while (true)
{
Thread.Sleep(1000);
}
}
}
其实这个问题我们还是对Task和异步执行过程理解不够深入导致的,所以本篇文章笔者就以这个问题来对Task和异步方法执行过程来做源码的探究。
PS:本文只贴出重要的代码和注释,不是其全部的代码,读者多关注下注释。

