Beispiel #1
0
        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();
        }
Beispiel #2
0
 public void AddChangeToQueue(MapChange mp)
 {
     MapChanges.Enqueue(mp);
 }