Ce que j'ai actuellement peut être résumé avec ce pseudo code:
public static void Main(string[] args)
{
var listOfObjects = Database.GetObjectsToUploadToOnlineService();
Parallel.ForEach(Upload)
}
private static void Upload(MyUploadObject obj)
{
//Build object (takes a few milliseconds)
//Format to JSON (takes a few more milliseconds)
//Upload (can take up to a max of 10 minutes)
//Wait for a response (can take up to a max of 10 minutes)
//Save response to our database (takes a few milliseconds)
}
Ce programme est simplement configuré sur notre serveur comme une tâche planifiée. Nous sommes propriétaires du programme et pouvons en faire ce que nous voulons. Ma question provient d'un blog sur la réalisation de contrôles de surveillance automatisés (je n'ai pas de lien à portée de main).
Cela m'a donc fait réfléchir: comment diable puis-je modifier mon programme pour lancer un autre programme de "surveillance"? Ou devrait-il changer d'être un programme de console pour dire un programme WPF qui est caché?
Dans l'ensemble, je préférerais pouvoir simplement exécuter un programme sur mon ordinateur qui vérifie la progression du programme via le réseau, donc je n'ai pas besoin de RDP sur le serveur pour vérifier son état (mais il ne le ferait pas être la fin du monde).
Dans l'ensemble, je suppose que j'aimerais voir une fenêtre qui dit quelque chose comme: Traiter x de y jusqu'à présent, les éléments suivants sont en cours de traitement. Faites la liste des éléments dans un tableau, par exemple, et demandez-leur de dire "Téléchargement" ou "En attente de réponse". Peut-être que si je devenais fou, je pourrais aussi comment une file d'attente d'articles en échec (mais ce serait juste un supplément).
Mon esprit continue de pencher vers un événement, mais je n'arrive pas à comprendre comment je pourrais exécuter un programme qui peut s'abonner et se désinscrire d'un programme en cours d'exécution. Est-ce seulement possible?