O que eu tenho atualmente pode ser resumido com este pseudo-código:
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)
}
Este programa acabou de ser configurado em nosso servidor como uma tarefa agendada. Nós possuímos o programa e podemos fazer o que queremos com ele. Minha pergunta deriva de um blog sobre como fazer verificações de monitoramento automatizadas (não tenho um link à mão).
Então isso me fez pensar: como no mundo posso modificar meu programa para iniciar outro programa de "monitoramento"? Ou isso deve mudar de um programa de console para dizer um programa WPF oculto?
No geral, eu preferiria poder executar um programa no meu computador que verifique o andamento do programa através da rede, para que não precise fazer o RDP no servidor para verificar seu status (mas não ser o fim do mundo).
No geral, suponho que gostaria de ver uma janela que diz algo como: Processo x de y até agora, os seguintes itens estão sendo processados. Liste os itens em, como, uma tabela e diga-os como "Carregando" ou "Aguardando resposta". Talvez se eu enlouquecer, eu também poderia como uma fila de itens com falha (mas isso seria apenas extra).
Minha mente continua inclinada para um evento, mas não consigo descobrir como executar um programa que possa se inscrever ou cancelar a inscrição em um programa em execução. Isso é possível?