public void Build(object sender, EventArgs e) { List <Thread> threads = new List <Thread>(); DequeueObject dequeueObject; for (int t = 0; t < MaxThreads; t++) { MapChanges.Add(new List <MapChange>()); ChangedTiles.Add(new List <int>()); if (Threading) { threads.Add(new Thread(new ParameterizedThreadStart(EnqueueDrops))); threads[t].Start(t); } else { EnqueueDrops(MapChanges[t]); } } if (Threading) { foreach (var thread in threads) { thread.Join(); } threads.Clear(); } Console.WriteLine("Drops Enqueued: " + MapChanges[0].Count); Timer.TimerEvent timerEventThreaded = new Timer.TimerEvent("Threaded Dequeue", MaxThreads * 10000); Timer.TimerEvent timerEventNonThreaded = new Timer.TimerEvent("Not Threaded Dequeue", MaxThreads * 10000); Timer.TimingManager.Start(); if (Threading) { timerEventThreaded.StartEvent(); } else { timerEventNonThreaded.StartEvent(); } for (int i = 0; i < MaxThreads; i++) { if (Threading) { dequeueObject = new DequeueObject(MapChanges[i], ChangedTiles[i]); threads.Add(new Thread(new ThreadStart(() => DequeueDrops(dequeueObject)))); threads[i].Start(); } else { dequeueObject = new DequeueObject(MapChanges[i], ChangedTiles[i]); DequeueDrops(dequeueObject); } } if (Threading) { foreach (var thread in threads) { thread.Join(); } threads.Clear(); } if (Threading) { //timerEventThreaded.FinishEvent(true); } else { timerEventNonThreaded.FinishEvent(true); } Timer.TimingManager.Stop(); foreach (var t in timerEvents) { //t.WriteToFile(); } PostProcessing(map.Tiles); MapChanges.Clear(); ChangedTiles.Clear(); GenerateImage(); /* * for (int i = 0; i < MaxThreads; i++) * { * threads.Add(new Thread(new ThreadStart(() => PostProcessing(ChangedTiles[i])))); * threads[i].Start(); * } * * * form.Label.Invoke((MethodInvoker)delegate { * * form.Label.Text = newText; * * }); * * * foreach (var thread in threads) * { * thread.Join(); * } * threads.Clear(); */ _pb.Image = _bm; _pb.Refresh(); DropButton.Invoke((MethodInvoker) delegate { DropButton.PerformClick(); }); //WriteToConsole(); }
public void AddChangeToQueue(MapChange mp) { MapChanges.Enqueue(mp); }