7
votes

Comment annuler la tâche ASYNC via la demande Web?

Voici le scénario: sur la connexion à l'utilisateur, je démarre une tâche qui écoute IMAP inactif pour les notifications de messagerie et il contient une connexion en direct avec le client via SignalR (type de notification push). Maintenant, le problème est comment puis-je annuler cette tâche? I.e. L'utilisateur annule la notification push ou la déconnexion ..

Edit: selon ma compréhension, par exemple, si 5 utilisateurs sont connectés au site, il y a 5 tâches en cours d'exécution? Alors, comment puis-je annuler des tâches individuelles?


2 commentaires

Pouvez-vous clarifier que les processus de tâches sont exécutés dans le service Web ou le service Windows ou autrement?


Salut @harshbaid Tâche est en cours d'exécution dans une application MVC.


3 Réponses :


1
votes

Le travailleur asynchrone doit être modifié pour soutenir l'annulation

http://www.csharp-examples.net/cancel-asynchronique-method /

Vous pouvez également utiliser le travailleur de fond qui est un peu moins compliqué http://msdn.microsoft.com/en-us /Library/system.componentmodel.backgroundworker.Cancelasync.aspx

Un problème que j'ai rencontré lorsque vous envoyez une annulation à une source externe (DB, application) qui a déjà démarré un travail, s'il ne prend pas en charge l'annulation, vous devrez peut-être attendre jusqu'à la fin.

Edit: Je n'ai jamais fait cela avec MVC, mais j'ai trouvé un bon article sur "Utilisation d'un jeton d'annulation" pour un processus ASYCN qui prend un paramètre CANCellationToken dans MVC4. http: //www.asp .NET / MVC / Tutorials / MVC-4 / Utilisation-Asynchrone-Méthodes-in-aspnet-mvc-4 J'espère que cela aide.


0 commentaires


0
votes

Le processus peut se tuer sans activité de l'utilisateur. Le moyen le plus simple d'échanger des variables dans l'autre thread - un fichier. Supposez que le navigateur client soit toujours ouvert, les demandes d'appel de la minuterie JavaScript appellent Ajax, qui écrit sur le serveur l'horodatage dans un fichier. Votre tâche lit périodiquement le fichier et lorsque l'horodatage est trop vieux, le processus se tue. La valeur du délai d'activité que vous pouvez définir de votre choix.


0 commentaires