Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Parâmetros "Args" para Aplicação Worker Service

Olá pessoal.

Tenho uma aplicação que roda em segundo plano em .NET Core 3.0 e preciso pegar um parâmetros quando for executado via prompt, porém estou tendo uma dificuldade nisso.

MNa minha inicial "Program" consigo intercepitar os parâmetro normalmente

public class Program
    {

        public static async Task Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();

            Console.WriteLine("Start App");
            Console.WriteLine();
            for (int i = 0; i < args.Length; i++)
            {
                Console.WriteLine($"Arg[{i}] = [{args[i]}]");
            }
            Console.WriteLine();
            Console.WriteLine("End App");
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<Worker>();
                });
    }

Mas preciso passar os valores quando houver para minha classe de serviço e posteriormente tratar essas informações recebidas.

public class Worker : BackgroundService
{
    private readonly ILogger<Worker> _logger;

    public Worker(ILogger<Worker> logger)
    {
        _logger = logger;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
            await Task.Delay(1000, stoppingToken);
        }
    }
}

Se alguém puder ajudar. Desde já obrigado

1 resposta
solução!

Alberto,

Se você já consegui ler os parâmetros passados, você pode passar os valores para uma outra função como passa valores recebidos por um usuário. A passagem pode ser por valor ou por referência.

Existem as formas de passar valores:

  • A classe precisa receber os valores que serão passados;
  • Declarar variáveis globais e a classe ler estas variáveis - atualmente NÃO é recomendado fazer isso;

Abaixo separei alguns links para você ler:

==========================================================

Passando parâmetros de tipo de valor (Guia de Programação em C#)

  • por valor
  • por referência

Artigo - 08/07/2022 - 3 minutos para o fim da leitura

https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/passing-value-type-parameters

==========================================================

C# – Para Iniciantes – Parte 1 – Variáveis, Passagem por Valor ou Referência.

Atendendo à diversos pedidos vou procurar abordar de uma forma diferente a transferência de conhecimentos nessa linguagem, apostila e tutorial tem de monte na internet, a intenção não é essa, vamos abordar necessidades reais de quem quer dar os primeiros passos em C# e agora quer aprender mais.

Stack e Heap

https://www.eduardopires.net.br/2012/07/c-sharp-iniciantes-passagem-valor-referencia/

==========================================================

Declare uma variável global em C#

Criado: March-30, 2021

Declare uma variável global definindo uma variável public static dentro de uma classe pública em C#

https://www.delftstack.com/pt/howto/csharp/declare-global-variable-in-csharp/

==========================================================

.NET - Variáveis Globais em VB .NET e C#

Falar em variáveis globais em tempos de orientação a objetos pode soar um tanto como que ultrapassado pois as boas práticas apontam para o encapsulamento de métodos e atributos, baixo acoplamento, alta coesão, interfaces, injeção de código, etc., e por ai andam os desenvolvedores...

https://macoratti.net/10/09/net_vgb1.htm

==========================================================

[]'s,

Fabio I.