Заявление на консоли HangC#

Место общения программистов C#
Ответить
Anonymous
 Заявление на консоли Hang

Сообщение Anonymous »

У меня есть приложение console .
И я использую последнюю версию следующих 2 пакетов:

[*]hangfire.core 1.8.20
> Hangfire.memorystorage 1.8.1.11
/> И у меня есть следующее простое приложение для консоли, чтобы запустить простую функцию, со следующей Cron: < /p>

* /2 * /1 * * * * < /p>
< /blockquote>
, который должен работать каждые 2 секунды. Идея?

Код: Выделить всё

using System.Linq.Expressions;
using Hangfire;
using Hangfire.MemoryStorage;

namespace TestJob
{
internal class Program
{
static void Main(string[] args)
{
var jobManager = new JobManager();
jobManager.Start();

Console.WriteLine("Hello, World!");
Console.Read();
}
}

class JobManager
{
public void Start()
{
GlobalConfiguration.Configuration.UseMemoryStorage();

var pulseCron = "*/2 */1 * * * *";
AddJob(BackgroundJobs.Pulse, () => RunPulseJobAsync(), pulseCron);
}

private void AddJob(string jobId, Expression methodCall, string jobCron)
{
RecurringJob.AddOrUpdate(jobId, methodCall, jobCron);
}

[Queue(JobConstants.CriticalQueue)]
public async Task RunPulseJobAsync()
{
var jobRunner = new PulseJob();

await jobRunner.StartAsync();
}
}

public sealed class PulseJob() : IJobRunner
{
public string Id => BackgroundJobs.Pulse;

public async Task StartAsync()
=> Console.WriteLine(DateTime.Now);
}

public interface IJobRunner
{
public string Id { get; }

Task StartAsync();
}

public static class JobConstants
{
public const string CriticalQueue = "critical";
}

public static class BackgroundJobs
{
public const string Pulse = "Pulse";
}
}
Даже я следил за https://docs.hangfire.io/en/latest/back ... e-app.html, он все еще не запускает:
RunPulseJobAsync(), pulseCron);
}
< /code>
Если я использую именно то, что говорится в официальном документе, то он работает, несмотря на то, что он работает каждые 15 секунд: < /p>
using System.Linq.Expressions;
using Hangfire;
using Hangfire.MemoryStorage;

namespace TestJob
{
internal class Program
{
static void Main(string[] args)
{
var jobManager = new JobManager();
jobManager.Start();

Console.WriteLine("Hello, World!");
Console.Read();
}
}

class JobManager2
{
BackgroundJobServer server;

public void Start()
{
GlobalConfiguration.Configuration.UseMemoryStorage();

RecurringJob.AddOrUpdate("Test", () => DoSomething(), "*/2 */1 * * * *");

server = new BackgroundJobServer();
}

public void DoSomething()
{
Console.WriteLine("2- " + DateTime.Now);
}
}
}
< /code>
Итак, в заключение, я заметил 3 вещах: < /p>

Минимальный интервал - каждые 15 секунд. < /li>
Он не работает с очередью.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... urring-job
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»