public async Task printLogBestand(Bos bos) { int maxAantalStappen = bos.Apen[0].bezochteBomen.Count; for (int x = 1; x < bos.Apen.Count; x++) { if (bos.Apen[x].bezochteBomen.Count > maxAantalStappen) { maxAantalStappen = bos.Apen[x].bezochteBomen.Count; } } using StreamWriter writer = File.CreateText(@"C:\Users\Sieglinde\OneDrive\Documenten\Programmeren\semester2\programmeren 4\apenbos\logbestand" + $"{bos.BosId}"); var gesorteerdeApen = bos.Apen.OrderBy(x => x.Naam); for (int y = 0; y < maxAantalStappen; y++) { foreach (Aap aap in gesorteerdeApen) { if (aap.bezochteBomen.Count > y) { writer.WriteLine($"{aap.Naam} is in tree {aap.bezochteBomen[y].Id} at ({aap.bezochteBomen[y].X},{aap.bezochteBomen[y].Y})"); } } } }
public async Task maakBitMap(Bos bos, string path) { Console.WriteLine($"Start schrijven bitmap voor bos {bos.BosId}"); Bitmap bm = new Bitmap(bos.Xmax * 10, bos.Ymax * 10); Graphics graphics = Graphics.FromImage(bm); Pen pen = new Pen(Color.Green, 1); foreach (Boom boom in bos.Bomen) { graphics.DrawEllipse(pen, boom.X * 10 - 2, boom.Y * 10 - 2, 4, 4); } foreach (Aap aap in bos.Apen) { Random rand = new Random(); int r = rand.Next(256); int g = rand.Next(256); int b = rand.Next(256); Color c = Color.FromArgb(r, g, b); Pen linePen = new Pen(c); Brush brush = new SolidBrush(c); graphics.FillEllipse(brush, aap.bezochteBomen[0].X * 10 - 2, aap.bezochteBomen[0].Y * 10 - 2, 4, 4); for (int x = 1; x < aap.bezochteBomen.Count; x++) { graphics.DrawLine(linePen, aap.bezochteBomen[x - 1].X * 10, aap.bezochteBomen[x - 1].Y * 10, aap.bezochteBomen[x].X * 10, aap.bezochteBomen[x].Y * 10); } } bm.Save(Path.Combine(path, bos.BosId.ToString() + "_escapeRoutes.jpg"), ImageFormat.Jpeg); Console.WriteLine($"Einde schrijven bitmap voor bos {bos.BosId}"); }
public async Task LaatApenOntsnappen(Bos bos) { List <Task> tasks = new List <Task>(); foreach (Aap aap in bos.Apen) { tasks.Add(Task.Run(() => bos.StartOntsnappingAap(aap))); } Task.WaitAll(tasks.ToArray()); }
static async System.Threading.Tasks.Task Main(string[] args) { Console.WriteLine("Hello World!"); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); Bos bos1 = new Bos(50, 50, 1000); Bos bos2 = new Bos(50, 50, 500); List <Bos> bossen = new List <Bos>() { bos1, bos2 }; //Apen maken Aap Tijs = new Aap("Tijs"); Aap Bart = new Aap("Bart"); Aap Bram = new Aap("Bram"); Aap Gust = new Aap("Gust"); Aap Charel = new Aap("Charel"); List <Aap> apen1 = new List <Aap> { Tijs, Bart, Bram }; List <Aap> apen2 = new List <Aap> { Gust, Charel }; //Apen aan het bos toevoegen bos1.VoegApenToe(apen1); bos2.VoegApenToe(apen2); //Alle apen ontsnappen asynchroon DoeAsynchroon da = new DoeAsynchroon(); List <Task> ontsnappingTasks = new List <Task>(); foreach (Bos bos in bossen) { ontsnappingTasks.Add(da.LaatApenOntsnappen(bos)); } Task.WaitAll(ontsnappingTasks.ToArray()); //Alle data die je nodig hebt voor de rest is geschreven, de rest kan allemaal asynchroon. await da.DatabankBitmapsBestandenDoen(bossen); stopwatch.Stop(); Console.WriteLine($"Time elamsed : {stopwatch.Elapsed}"); }
public async Task VoegMonkeyRecordToe(Bos bos) { Console.WriteLine($"start toevoegen monkeyrecords voor bos {bos.BosId}"); SqlConnection connection = getConnection(); string queryMonkey = "INSERT INTO dbo.MonkeyRecords(monkeyId, monkeyName, woodId, seqnr, treeId, x, y) VALUES(@monkeyId, @monkeyName, @woodId, @seqnr, @treeId, @x, @y)"; using (SqlCommand command = connection.CreateCommand()) { connection.Open(); try { command.Parameters.Add(new SqlParameter("@monkeyId", SqlDbType.Int)); command.Parameters.Add(new SqlParameter("@monkeyName", SqlDbType.NVarChar)); command.Parameters.Add(new SqlParameter("@woodId", SqlDbType.Int)); command.Parameters.Add(new SqlParameter("@seqnr", SqlDbType.Int)); command.Parameters.Add(new SqlParameter("@treeId", SqlDbType.Int)); command.Parameters.Add(new SqlParameter("@x", SqlDbType.Int)); command.Parameters.Add(new SqlParameter("@y", SqlDbType.Int)); command.CommandText = queryMonkey; for (int aapTeller = 0; aapTeller < bos.Apen.Count; aapTeller++) { Aap aap = bos.Apen[aapTeller]; for (int boomTeller = 0; boomTeller < aap.bezochteBomen.Count; boomTeller++) { Boom boom = aap.bezochteBomen[boomTeller]; command.Parameters["@monkeyId"].Value = aap.Id; command.Parameters["@monkeyName"].Value = aap.Naam; command.Parameters["@woodId"].Value = bos.BosId; command.Parameters["@seqnr"].Value = boomTeller; command.Parameters["@treeId"].Value = boom.Id; command.Parameters["@x"].Value = boom.X; command.Parameters["@y"].Value = boom.Y; command.ExecuteNonQuery(); } } } catch (Exception ex) { Console.WriteLine(ex); } finally { connection.Close(); } Console.WriteLine($"stop toevoegen monkeyrecords voor bos {bos.BosId}"); } }
public async Task voegLogsToe(Bos bos) { Console.WriteLine($"start toevoegen logs voor bos {bos.BosId}"); SqlConnection connection = getConnection(); string queryLogs = "INSERT INTO dbo.logs(woodId, monkeyId, message) VALUES(@woodId, @monkeyId, @message)"; using (SqlCommand command = connection.CreateCommand()) { connection.Open(); try { command.Parameters.Add(new SqlParameter("@woodId", SqlDbType.Int)); command.Parameters.Add(new SqlParameter("@monkeyId", SqlDbType.Int)); command.Parameters.Add(new SqlParameter("@message", SqlDbType.NVarChar)); command.CommandText = queryLogs; for (int aapTeller = 0; aapTeller < bos.Apen.Count; aapTeller++) { Aap aap = bos.Apen[aapTeller]; for (int boomTeller = 0; boomTeller < aap.bezochteBomen.Count; boomTeller++) { Boom boom = aap.bezochteBomen[boomTeller]; command.Parameters["@monkeyId"].Value = aap.Id; command.Parameters["@woodId"].Value = bos.BosId; command.Parameters["@message"].Value = $"{aap.Naam} is now in tree {boom.Id} at location ({boom.X},{boom.Y})"; command.ExecuteNonQuery(); } } } catch (Exception ex) { Console.WriteLine(ex); } finally { connection.Close(); } } Console.WriteLine($"stop toevoegen logs voor bos {bos.BosId}"); }
public async Task VoegWoodRecordToe(Bos bos) { Console.WriteLine($"start toevoegen woodrecords voor bos {bos.BosId}"); SqlConnection connection = getConnection(); string queryWood = "INSERT INTO dbo.WoodRecords(woodId,treeId,x,y) VALUES(@woodId, @treeId, @x, @y)"; using (SqlCommand command = connection.CreateCommand()) { connection.Open(); try { command.Parameters.Add(new SqlParameter("@woodId", SqlDbType.Int)); command.Parameters.Add(new SqlParameter("@treeId", SqlDbType.Int)); command.Parameters.Add(new SqlParameter("@x", SqlDbType.Int)); command.Parameters.Add(new SqlParameter("@y", SqlDbType.Int)); command.CommandText = queryWood; command.Parameters["@woodId"].Value = bos.BosId; foreach (Boom boom in bos.Bomen) { command.Parameters["@treeId"].Value = boom.Id; command.Parameters["@x"].Value = boom.X; command.Parameters["@y"].Value = boom.Y; command.ExecuteNonQuery(); } } catch (Exception ex) { Console.WriteLine(ex); } finally { connection.Close(); } } Console.WriteLine($"stop toevoegen woodrecords voor bos {bos.BosId}"); }