Forms-GUI有时*被阻止

时间:2017-07-27 19:43:01

标签: c# .net multithreading user-interface

有时程序会一直在计算“某事”(?)并且GUI被阻止。但大部分时间都是有效的。我不明白为什么。

代码:

private void button1_Click(object sender, EventArgs e)
    {
        new Thread (Taskstuff).Start ();

    }

private void  Taskstuff()
     {
         Parallel.ForEach(Pfade, element =>
        {

              DoStuff(element);

        });

    }
private  void DoStuff(string path)
    {
        IEImage Bild = new IEImage(path);
        string name;
        name = Path.GetFileName(path);

        Organizer(Bild);

    }
private void Organizer(IEImage Bild)
    {
        Bild.ConvertToGray();
        Bild.EdgeDetect_Sobel();

        Bitmap VorverarbeitetBitmap = Bild.CreateBitmap();
        //Array für Cluster
        List<Point> points = BildArray(VorverarbeitetBitmap);
        List<Point> Rand = new List<Point>();
        //Clusteraufruf

        if (checkBox1.Checked)
        {
            List<List<Point>> Clusterkopie = DBSCAN.Cluster(points);
            Rand= DBRAND(Clusterkopie[größteclusternummer]);
        }
        //Nur Randaufruf, wenn keine Clusterrechnung notwendig
        else
        {
            Rand=DBRAND(points);
        }

        //Feststellung der Neigung
        bool neigung = Neigung(Rand);

        //Sortieren nach Kreiskoordinaten
        List<Point> sortierung = Sortierung(Rand);

        //Bestimmung des Eckpunktes
         Point ecke = Ecke(sortierung,neigung);

        //Berechnung der Gerade mit den meisten Treffern
        List<Point> Bresenergebnis = Geraden(ecke, neigung, sortierung);

        //Messung Distanz Ecke <-> Kurve in Pixeln
        double distanz = Distanz(Bresenergebnis, ecke, neigung);

        //do more stuff

    }

目前代码中没有GUI访问权限。所有结果都只是变量。 我不明白为什么GUI不总是被阻止或总是工作。我不会在尝试之间改变任何东西。 :| 也许有时新线程与旧的“GUI线程”相同?

0 个答案:

没有答案