- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 Worker 的 BackgroundService,我重写了 ExecuteAsync 方法以每 10 秒运行一次。有时,我跑的东西会持续很长时间。在这种情况下,我想终止正在运行的程序,然后重新运行它。我怎样才能做到这一点?
我的后台服务如下:
public class Worker : BackgroundService {
private readonly ITask task;
private readonly IHostApplicationLifetime appLifeTime;
public Worker(ITask task, IHostApplicationLifetime appLifeTime) {
this.task = task;
this.appLifeTime = appLifeTime;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken) {
while (!stoppingToken.IsCancellationRequested)
{
try {
this.task.Execute(stoppingToken);
} catch (Exception e) {
this.appLifeTime.StopApplication();
}
await Task.Delay(10000, stoppingToken);
}
}
}
public interface ITask {
void Execute(CancellationToken stoppingToken);
}
最佳答案
你可以按照这些思路做一些事情:
protected override async Task ExecuteAsync(CancellationToken stoppingToken) {
var cancellationSource = CancellationTokenSource.CreateLinkedTokenSource(stoppingToken);
cancellationSource.CancelAfter(10000);
return Task.Run(() => task.Execute(cancellationSource.Token));
}
如果你想处理执行和/或等待任务,那么你可以,但这是一个简单的例子。
关于c# - 如何为 BackgroundService 的 ExecuteAsync 设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66455973/
我知道如何在asp.net core中使用后台服务 public class WatchMan : BackgroundService { } 我有一个点核心控制台应用程序,我想作为窗口服务运
我知道如何在asp.net core中使用后台服务 public class WatchMan : BackgroundService { } 我有一个点核心控制台应用程序,我想作为窗口服务运
所以在 MSDN对于 ASP.Net Core,它向您展示了如何使用托管服务创建后台任务。甚至有一个特定的段落解释了如何创建后台队列。 现在我的问题是,ExecuteAsync 方法是否已经在其自己的
我正在使用 .NET Core 2.2,我想运行一个长时间运行的后台任务(比如旧的 Windows 服务)。我想使用 Microsoft.Extensions.Hosting.BackgroundSe
我正在使用 .NET Core 2.2,我想运行一个长时间运行的后台任务(比如旧的 Windows 服务)。我想使用 Microsoft.Extensions.Hosting.BackgroundSe
我有一个后台 worker 实现了 BackgroundService(由 MS 提供)。 看看这个简单的实现: public class MyService : BackgroundService
我在 Asp.Net Core Web API 中实现了一个 Microsoft.Extensions.Hosting.BackgroundService,它在 ExecuteAsync 内部有一个阻
在 ASP.NET Core 上,我观察到一种奇怪的行为,这实际上在 BackgroundService not shutting down, stoppingToken never set with
我创建了 WcBackgroundService(由 BackgroundService 继承)并将其注入(inject)到 OrdersController。当前端 API 在重启端点上发送请求时,
我有一个名为 Worker 的 BackgroundService,我重写了 ExecuteAsync 方法以每 10 秒运行一次。有时,我跑的东西会持续很长时间。在这种情况下,我想终止正在运行的程序
我创建了一个像这样的 BackgroundService: public class CustomService : BackgroundService { protected overrid
我正在开发 .NET Core 3.1 后台服务,该服务将作为守护进程安装在 Debian AWS EC2 实例上。 优雅地关闭守护进程以停止运行任务并完成一些要处理的任务(发送一些事件等)是很重要的
我目前有一个带有 .NET Core SDK v5.0.403 的 ASP.NET Core 应用程序。 在此应用程序中,我定义了多个 BackgroundService,其中之一如下: public
我目前有一个带有 .NET Core SDK v5.0.403 的 ASP.NET Core 应用程序。 在此应用程序中,我定义了多个 BackgroundService,其中之一如下: public
新的 .NET Core“通用主机”似乎是实现运行多个并发任务的控制台应用程序的不错选择。我认为我可以使用 IHostedService(或 BackgroundService)将它们定义为服务,而不
我在 .net 通用主机中托管了一个 BackgroundService,如下所示: var builder = Host.CreateDefaultBuilder(args); builder
我正在尝试启动分配给 IHostBuilder 的 services.HostedService 的 BackgroundService。 IHostBuilder定义: private static
我正在尝试启动分配给 IHostBuilder 的 services.HostedService 的 BackgroundService。 IHostBuilder定义: private static
我创建了一个从 Microsoft.Extensions.Hosting.BackgroundService 继承的辅助服务,然后我通过 visual studio 调试器将其部署到我的 Window
拥有 .net core 版本 3.1.8 和 asp.net core 版本 3.1.8 的 .net core worker 服务 我在从 worker 服务加载用户 secret 时遇到问题,但
我是一名优秀的程序员,十分优秀!