Closed detectivejd closed 2 weeks ago
Please!, I need to help with this code, The worker services are different applications and they are installed in a raspberry pi as deamon services in Linux
Service to Ticket Impress
Service to Bill Impress
I don´t know if on the code have fails or not, I was looking for information in Google but all that I found was useless and I didn´t work it.
Ticket Impress -> Program.cs
using ViewParking.Tickets.Raspberry.Impresion;
IHost host = Host.CreateDefaultBuilder(args)
.UseSystemd()
.ConfigureServices(services =>
{
services.AddSingleton<IHostedService, Worker>();
})
.Build();
await host.RunAsync();
Ticket Impress -> Worker.cs
namespace ViewParking.Tickets.Raspberry.Impresion;
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.AddEnvironmentVariables()
.Build();
var properties = configuration.GetSection("Default");
var tiempoCicloChequeo = properties.GetValue<int>("TiempoCicloServicioMilisegundos");
var entrada = new EntradaImpresion();
Console.Clear();
while (!stoppingToken.IsCancellationRequested)
{
await Task.Delay(tiempoCicloChequeo, stoppingToken);
entrada.Iniciar();
}
}
}
Bill Impress -> Program.cs
using ViewParking.Facturas.Raspberry;
IHost host = Host.CreateDefaultBuilder(args)
.UseSystemd()
.ConfigureServices(services =>
{
services.AddSingleton<IHostedService, Worker>();
})
.Build();
await host.RunAsync();
Bill Impress -> Worker.cs
using ViewParking.Facturas.Raspberry.Impresion;
namespace ViewParking.Facturas.Raspberry
{
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.AddEnvironmentVariables()
.Build();
var properties = configuration.GetSection("Default");
var tiempoCicloChequeo = properties.GetValue<int>("TiempoCicloServicioMilisegundos");
var entrada = new EntradaImpresion();
Console.Clear();
while (!stoppingToken.IsCancellationRequested)
{
await Task.Delay(tiempoCicloChequeo, stoppingToken);
entrada.Iniciar();
}
}
}
}
You response me, please!.
Hi, that's too much information, and your code is not even presented with syntax highlight. Very hard to follow, especially with a lot of Spanish embedded in naming and all. Anyhow, from what I could understand, you have 1 printer connected but 2 different apps running at the same time wishing to use the printer, but only the first application is able to do so, the second one is throwing an error. Is that it?
If that's the case, you have a race condition between your apps when consuming the printer resource. If you really wish to implement it like that (separate applications using the same printer) you would need a printing spooler, where you would have to manage the readiness of the printer, and most likely a printing queue, so there are no conflicts when trying to use it.
Hi, how are you? I wait that you are good, I have the next trouble:
I´m using 2 worker services implemented in C# .net7 one to ticket impress and other to bills impress but they don´t found of simultane form. I show you the images:
ticket impress
bills impress
The Impress Code is the next:
Ticket Impress
Bills Impress:
I have tried delete prnt instantation from the constructor and use it in the impress task but it didn´t work.
I need your help with urgency, if you can answer me, I will appreciate it. Greetings.