private void perform( System.IntPtr Scan0, int stride)
        {
            int height = this.bitmap.Height;
            int steps = computeHeightSteps(height);

            // anzahl der threads die mehr als die min elemente berechnen
            int sectorThreshold = height % thHandler.getThreads();

            try
            {
                for (int i = 0; i < thHandler.getThreads(); i++)
                {
                        // Zu bearbeitende Zeilen für jeden Thread berechnen
                    int startIndex = i * steps + Math.Min(i, sectorThreshold);
                    int stopIndex = startIndex + steps + (i < sectorThreshold ? 1 : 0);

                        // Das entsprechende Filterobjekt erzeugen und aufrufen
                    ManipulationFactory factory = new FilterFactory();
                    Manipulate manip = factory.create(this.filter, this.bitmap, Scan0, stride, startIndex, stopIndex, this.thHandler, this.values);
                    Thread thread = new Thread(manip.perform);

                    // Thread starten
                    thread.Start();
                    // Thread registrieren, um später abzufragen ob thread läuft oder nicht
                    this.thHandler.register(thread);

                }
            }
            catch (FilterUndefinedException e)
            {
                Console.WriteLine( e.Message);
            }
        }
 public void createTest()
 {
     FilterFactory target = new FilterFactory(); // TODO: Passenden Wert initialisieren
     ImageManipulatorType.Name name = ImageManipulatorType.Name.INVERT;
     Bitmap bitmap = new Bitmap(1, 1);
     IntPtr Scan0 = new IntPtr(); // TODO: Passenden Wert initialisieren
     int stride = 0; // TODO: Passenden Wert initialisieren
     int height_start = 0; // TODO: Passenden Wert initialisieren
     int height_end = 0; // TODO: Passenden Wert initialisieren
     ThreadHandler thHandler = null; // TODO: Passenden Wert initialisieren
     int[] values = null; // TODO: Passenden Wert initialisieren
     Manipulate expected = null; // TODO: Passenden Wert initialisieren
     Manipulate actual;
     actual = target.create(name, bitmap, Scan0, stride, height_start, height_end, thHandler, values);
     Assert.AreNotEqual(expected, actual);
     Assert.IsInstanceOfType(actual, typeof(Manipulate));
 }
 public void FilterFactoryConstructorTest()
 {
     FilterFactory target = new FilterFactory();
     Assert.IsInstanceOfType(target, typeof(FilterFactory));
 }