Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Pingen van alle locaties
- // Wordt uitgevoerd bij het starten van het programma en daarna telkens na het verlopen van de timer
- public void PingLocaties()
- {
- OleDbConnection con = new OleDbConnection();
- con.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ToString();
- con.Open();
- OleDbCommand cmd = new OleDbCommand();
- cmd.CommandText = "select Locatie_dns from Locaties";
- cmd.Connection = con;
- OleDbDataReader ldns = cmd.ExecuteReader();
- List<string> loc_dns = new List<string>();
- int i;
- while (ldns.Read())
- {
- loc_dns.Add((string)ldns["Locatie_dns"]);
- }
- try
- {
- // We maken een List aan voor events...
- List<ManualResetEvent> events = new List<ManualResetEvent>();
- for (i = 0; i < loc_dns.Count; i++)
- {
- // ...En maken een event voor elk ping. Deze voegen we ook toe aan de lijst
- var finishedEvent = new ManualResetEvent(false);
- events.add(finishedEvent);
- string loopIp = loc_dns[i];
- WaitCallback func = delegate (object state)
- {
- if (PingIP(loopIp))
- {
- // Resultaat OK wegschrijven naar de database bij geslaagde ping
- try
- {
- OleDbConnection con1 = new OleDbConnection();
- con1.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ToString();
- con1.Open();
- OleDbCommand cmd1 = new OleDbCommand();
- cmd1.CommandText = "update Locaties set [Locatie_status] = @l1 where locatie_dns='" + loopIp + "'";
- cmd1.Parameters.AddWithValue("@l1", "OK");
- cmd1.Connection = con1;
- int a = cmd1.ExecuteNonQuery();
- con1.Close();
- }
- catch (Exception ex)
- {
- MessageBox.Show("Er is iets fout gegaan: " + ex);
- }
- }
- else
- {
- // Resultaat NOK wegschrijven naar de database bij mislukte ping
- try
- {
- OleDbConnection con1 = new OleDbConnection();
- con1.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ToString();
- con1.Open();
- OleDbCommand cmd1 = new OleDbCommand();
- cmd1.CommandText = "update Locaties set [Locatie_status] = @l1 where locatie_dns='" + loopIp + "'";
- cmd1.Parameters.AddWithValue("@l1", "NOK");
- cmd1.Connection = con1;
- int a = cmd1.ExecuteNonQuery();
- con1.Close();
- }
- catch (Exception ex)
- {
- MessageBox.Show("Er is iets fout gegaan: " + ex);
- }
- }
- // Wanneer de ping klaar is kunnen we de Event 'Set'en om zo te indiceren dat deze ping actie klaar is
- finishedEvent.Set();
- };
- ThreadPool.QueueUserWorkItem(func);
- }
- }
- catch
- {
- MessageBox.Show("Catch");
- }
- // We wachten asynchroon om niet de rest van het programma te blokkeren
- ThreadPool.QueueUserWorkItem(delegate {
- // Alle ping acties zijn ingepland
- // Nu moeten we wachten tot alle events ge'Set' zijn
- WaitHandle.WaitAll(events.ToArray());
- // En nu kunnen we de rest uitvoeren
- con.Close();
- LoadGridLocaties();
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment