Quello che ho attualmente può essere riassunto con questo pseudo codice:
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)
}
Questo programma è appena configurato sul nostro server come operazione pianificata. Possediamo il programma e possiamo fare ciò che vogliamo con esso. La mia domanda deriva da un blog sulla creazione di controlli di monitoraggio automatici (non ho un collegamento a portata di mano).
Quindi questo mi ha fatto pensare: come posso modificare il mio programma in modo da poter attivare un altro programma di "monitoraggio"? O questo dovrebbe cambiare da programma per console a dire un programma WPF che è nascosto?
Nel complesso, preferirei essere in grado di eseguire solo un programma sul mio computer che controlla l'avanzamento del programma attraverso la rete, quindi non devo RDP nel server per controllarne lo stato (ma non sarebbe la fine del mondo).
In generale, suppongo che mi piacerebbe vedere una finestra che dice qualcosa come: Processo x di y finora, i seguenti elementi sono in fase di elaborazione. Elenca gli articoli in, come, una tabella e chiedi loro come "Caricamento" o "In attesa di risposta". Forse se impazzisco potrei anche vedere come una coda di elementi falliti (ma sarebbe solo extra).
La mia mente continua a orientarsi verso un evento, ma non riesco a capire come eseguirò un programma che può iscriversi e disiscriversi a un programma in esecuzione. È persino possibile?