使用WorkerService的股票项目模板(.net核心3.1),我无法让IOptions<x>工作。
这里有一个最小的复制:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder
请参阅下面的示例代码。我希望主机在后台服务崩溃时自动停止,但事实并非如此。结果是Windows服务看起来正在运行,但它不执行任何工作……如何确保程序检测到后台服务已停止? using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
我正在尝试加载运行BackgroundService的控制台应用程序中的相关实体,但它不加载相关实体,我已经遇到这个问题好几个小时了,我只是注意到它只在BackgroundService中发生,通过在索引页面模型中注入DbContext类在web应用程序中尝试相同的DbContext,没有出现任何问题。
以下是来自控制台应用程序的代码:
后台服务:
public class MyService : BackgroundService
{
private readonly MyDbContext _context;
public MyService(MyDbContext co
我有.NET核心控制台应用程序,它包含两个独立的任务,应该在应用程序的整个生命周期中并行运行。我在考虑用
class BackgroundTaskOne : BackgroundService
{
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
try
{
// do long
每当我从api端点收到某个请求时,我都会尝试按需启动后台任务。所有的任务所做的就是发送一封电子邮件,延迟30秒。所以我觉得BackgroundService很适合。但问题是,它看起来像是BackgroundService主要用于循环任务,而不是根据这个answer按需执行。 那么,我还有什么其他的选择,我希望不需要依赖像Hangfire这样的第三方库?我使用的是asp.net核心3.1。 这是我的后台服务。 using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extension
我正在寻找一个可以调用异步方法的stoppingToken.Register(ShutDown)的替代方案?基本上,应该等待_restClient.Spot.UserStream.StopUserStreamAsync。现在还不是。
如有其他建议,敬请见谅。
using Binance.Net;
using Binance.Net.Enums;
using Binance.Net.Interfaces;
using Binance.Net.Objects;
using CryptoExchange.Net.Authentication;
using CryptoExchange.Net.Obj
我正在使用来自Channel的System.Threading.Channels,并希望批量阅读项目(5项),我有如下方法,
public class Batcher
{
private readonly Channel<MeasurementViewModel> _channel;
public Batcher()
{
_channel = Channel.CreateUnbounded<MeasurementViewModel>();
}
public async Task<MeasurementView
如何在asp.NET 2.2中添加通用后台服务?
public class TestBackgroundService<T> : BackgroundService
{
private ICustomClass<T> _customClass = new CustomClass<T>();
public TestBackgroundService(ICustomClass<T> customClass)
{
_customClass = customClass;
}
protected o
目前,在.net核心BackgroundService中实际运行Http的最佳方法是什么,即运行起来很容易,但是如何实际正确地集成停止方法。
目前,我已经这样写了代码:
var server = new Server
{
Services = {ConnectionHandler.BindService(_vpnConnectionHandler)},
Ports = {new ServerPort("0.0.0.0", 50055, ServerCredentials.Insecure)}
};
var source = new TaskCompletion
给定以下代码,如何创建两个(或更多)工作人员服务?我不想创建第二个工人类。有没有一种利用DI并创建第二个Worker实例的方法?
Program.cs
using Autofac;
using Autofac.Extensions.DependencyInjection;
using MyNamespace;
var host = Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer<Conta
我在.NET Core 2中成功地使用了以下内容,但它在.NET Core 3中不起作用。
我从零开始制作了一个新的Worker Service .Net核心3项目,并且只添加了最小值来重新创建我的错误。
这是我在Program.cs的切入点
namespace WorkerService1DeleteMe
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
我有一个.NET Core3.1应用程序,它提供一个描述应用程序运行状况的端点,以及一个在数据库中运行数据的IHostedService。但是,存在一个问题,HostedService的worker函数开始处理很长时间,因此启动中的Configure()方法没有被调用,/status端点也没有运行。
我希望/status端点在HostedService启动之前开始运行。如何在托管服务之前启动端点?
样本代码
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
我正在用ASP.Net Core5开发一个web应用程序。在这个应用程序中,我创建了两个后台进程。
我需要定期运行它们。喜欢,
Task 01 runs first,
after 10 seconds task 02 runs,
then after 10 seconds task 01 runs,
then after 10 seconds task 02 runs,
and so on.
到目前为止,我已经这样做了:
public class RunTaskPeriodically : BackgroundService
{
private readonly IService
在我的ASP.Net核心6应用程序中,一个名为MqttClientService的BackgroundService任务运行一个MQTTNet客户端,该客户端处理传入的mqqt消息,并使用消息进行响应以指示其成功。
我已经让使用了Console.ReadLine(),但是这感觉就像对我的用例的攻击。是否有更好的方法来保持BackgroundService处理传入消息而不不断地重新启动?
有,但是它使用由接口实现的句柄,而不是库现在使用的异步事件:。
如有任何信息将不胜感激,谢谢。
MqttClientService.cs in Services/
using MQTTnet;
using MQ
我有一个ASP.Net Core应用程序,它使用来自AMQ的消息。目前,我在BackgroundService中有一个连接到侦听器的事件处理程序的消费代码。整个过程是在一段时间内查看(检查取消令牌),以确保任何错误都被处理,并且我们重新尝试订阅,但是我还有一个内部while循环来保持服务的活力,但是它不需要做任何事情。
我的问题是,我应该做什么,在内部的时间循环,以确保我没有消耗不必要的CPU;例如,Task.Yield(),Task.Delay(something)
public class ReceiverService : BackgroundService
{
...