То, что у меня есть, можно суммировать с помощью этого псевдокода:
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)
}
Эта программа просто настроена на нашем сервере как запланированное задание. Мы владеем программой и можем делать с ней все, что хотим. Мой вопрос связан с блогом о проведении автоматических проверок мониторинга (у меня нет удобной ссылки).
Это заставило меня задуматься: как в мире я могу изменить свою программу, чтобы я мог запустить другую программу «мониторинга»? Или это должно измениться от того, чтобы быть консольной программой, чтобы сказать программу WPF, которая скрыта?
В целом, я бы предпочел иметь возможность просто запускать на своем компьютере программу, которая проверяет ход выполнения программы по сети, поэтому мне не нужно подключаться к серверу по протоколу RDP, чтобы проверить его состояние (но это не быть концом света).
В целом, я полагаю, что я хотел бы видеть окно, которое говорит что-то вроде: Процесс x из y до сих пор, следующие элементы обрабатываются. Перечислите элементы, например, в таблице, и пусть они скажут как «Загрузка» или «Ожидание ответа». Может быть, если я сойду с ума, я мог бы также определить очередь неисправных предметов (но это было бы просто лишним).
Мой разум продолжает склоняться к событию, но я не могу понять, как мне запустить программу, которая может подписаться и отписаться от работающей программы. Это вообще возможно?