Запуск метода экземпляра Singleton при запуске приложения с использованием ядра dotnet для внедрения зависимостей

$doc/param[@value = "valueB"]/fn:data(@value) Предполагая, что $ doc имеет Xml.

0
задан Kyle L. 1 March 2019 в 17:53
поделиться

2 ответа

Вы должны создать некоторый фоновый рабочий для обработки потока очереди.

public void BeginProcessing()
{
    while(true)
    {

Это поймает вызывающий поток в бесконечный цикл. Попробуйте использовать задачу или фоновый работник. Вы даже можете поместить его в очередь самостоятельно, чтобы скрыть его от основного приложения.

Чтобы начать BeginProcessing, из main, получите ваш встроенный контейнер и запросите IQueue. вызовите свой IQueue.BeginProcessing () и продолжите запуск в обычном режиме. Если все работает, как ожидалось, всякий раз, когда IQueue get вводится в контроллер, он будет таким же, каким вы запустили BeginProcessing на & amp; у вас должен быть доступ к нему в контексте контроллера

0
ответ дан Zakk Diaz 1 March 2019 в 17:53
поделиться

Я закончил тем, что нашел решение для своего варианта использования, не полагаясь на абсурдную абстракцию или какую-то непонятную часть .NET Framework. Будь это лучшая практика или нет, я не знаю. Но это работает и делает то, что мне нужно, и в конце концов, это то, что каждый действительно хочет.

Мое решение:

Зарегистрируйте ваш синглтон в структуре DI, вставьте зависимость в метод Configure, затем запустите метод обработки в другой поток.

Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    services.AddSingleton<IQueue, Queue>();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IQueue queue)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }

    Task.Run(() => queue.BeginProcessing());

    app.UseHttpsRedirection();
    app.UseMvc();
}
0
ответ дан Kyle L. 1 March 2019 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: