2017-06-01 1 views
1

Je n'arrive pas à démarrer les travaux Hangfire sur une simple application console C# en utilisant MemoryStorage. Je voulais essayer certaines choses avec Hangfire, mais je n'arrive pas à comprendre comment le configurer.Comment exécuter avec succès des travaux Hangfire MemoryStorage dans une application de console?

Voici mon code:

private static void Main(string[] args) 
    { 
     GlobalConfiguration.Configuration.UseMemoryStorage(); 

     Hangfire.BackgroundJob.Enqueue(() => Console.WriteLine("fire!")); 
     Hangfire.RecurringJob.AddOrUpdate(() => Console.WriteLine("minute!"), Cron.Minutely); 

     Console.ReadKey(); 
    } 

Je ne reçois pas un de ces messages. J'ai également essayé d'utiliser JobStorage.Current = new MemoryStorage(new MemoryStorageOptions());, mais cela n'a rien changé.

Répondre

1

Si le stockage en mémoire est utilisé, vous devez ajouter le serveur Hangfire (c'est-à-dire un pool de threads de travail) au même processus qui déclare le stockage (le stockage est juste une instance ConcurrentDictionary).

Dans une application de la console, il pourrait ressembler à:

static void Main(string[] args) 
{ 
    GlobalConfiguration.Configuration.UseMemoryStorage(); 

    BackgroundJob.Enqueue(() => Console.WriteLine("Easy!")); 

    using (new BackgroundJobServer()) 
    { 
     Console.WriteLine("Hangfire Server started. Press ENTER to exit..."); 
     Console.ReadLine(); 
    } 
} 
+0

Brillant, je vous remercie! Je n'avais pas réalisé que le programme devait être arrêté là. Le travail récurrent fonctionne aussi bien. – Phronux