The class Radar
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Extract
{
class Radar
{
public List<string> links = new List<string>();
string defaultlink;
DateTime current;
string currentLink;
public List<DateTime> dates = new List<DateTime>();
DateTime workingFirstDateTime;
public List<string> folders = null;
public Radar(List<string> inputFolders)
{
folders = inputFolders;
current = RoundDown(DateTime.Now, TimeSpan.FromMinutes(-5));
}
public async Task GetRadarImages()
{
defaultlink = "https://ims.gov.il/sites/default/files/ims_data/map_images/IMSRadar/IMSRadar_";
var ct = current.ToString("yyyyMMddHHmm");
currentLink = defaultlink + ct + ".gif";
using (System.Net.WebClient wc = new System.Net.WebClient())
{
try
{
await wc.DownloadFileTaskAsync(new Uri(currentLink), folders[0] + "\\image0.gif");
workingFirstDateTime = current;
GenerateRadarLinks();
}
catch (Exception)
{
current = current.AddMinutes(-5);
ct = current.ToString("yyyyMMddHHmm");
currentLink = defaultlink + ct + ".gif";
await GetRadarImages();
}
}
}
private void GenerateRadarLinks()
{
for (var i = 0; i < 34; i++)
{
current = current.AddMinutes(-5);
dates.Add(current);
var date = dates[i].ToString("yyyyMMddHHmm");
links.Add(defaultlink + date + ".gif");
}
var workingDate = workingFirstDateTime.ToString("yyyyMMddHHmm");
dates.Insert(0, workingFirstDateTime);
}
DateTime RoundDown(DateTime date, TimeSpan interval)
{
return new DateTime(date.Ticks / interval.Ticks *
interval.Ticks);
}
}
}
When it's doing the line
await wc.DownloadFileTaskAsync(new Uri(currentLink), folders[0] + "\\image0.gif");
Then it's taking 17-18 seconds to move to the next line to the catch :
current = current.AddMinutes(-5);
but why it's taking 17-18 seconds to make the DownloadFileTaskAsync ?
I form1 I have this button click event :
private void btnStart_Click(object sender, EventArgs e)
{
StartDownloading();
}
Then the StartDownloading
private void StartDownloading()
{
btnStart.Enabled = false;
btnRadarPath.Enabled = false;
btnSatellitePath.Enabled = false;
lblStatus.Text = "Preparing Downloads";
loadingLabel1.StartCountDownTimer(1000, true);
dates = new List<DateTime>();
datesonimages = new List<string>();
btnRadarPath.Enabled = false;
btnSatellitePath.Enabled = false;
DownloadImages();
}
And last the DownloadImages
public async void DownloadImages()
{
CreateDownloadFolders();
urls = new List<string>();
await rad.GetRadarImages();
foreach (string link in rad.links)
{
urls.Add(link);
}
await sat.DownloadSatelliteAsync();
foreach (string link in sat.SatelliteUrls())
{
urls.Add(link);
}
urlsCounter = urls.Count;
await DownloadAsync();
}