/// <summary> /// main loop /// </summary> public void run() { Configuration config = new Configuration(); config.Load("config.json"); Availability[] last_availability = null; while (true) { var new_availability = fetchAsync(config.zipCode, config.carriers, config.products).Result; if (last_availability == null || !Availability.isSame(last_availability, new_availability)) { int available_count = 0; foreach (var ava in new_availability) { if (!ava.isAvailable) { continue; } showStatus("Availabile: " + ava.product.name + " " + ava.carrier.name + " " + ava.store.name); available_count++; } if (available_count == 0) { showStatus("Nothing available"); } showStatus(""); if (last_availability != null) { // notify notify(new_availability, last_availability, config); } last_availability = new_availability; } Thread.Sleep(config.refreshInterval); } }