Laden...

Multithreading

Erstellt von baer999 vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.705 Views
B
baer999 Themenstarter:in
375 Beiträge seit 2007
vor 17 Jahren
Multithreading

Hi,

also ich wollte einfach mal so Multithreading lernen und als erstes Beispiel wollte ich eine Progressbar in einem seperaten Thread füllen. Ich weiß, dass mich viele jetzt auf das FAQ Posting jagen werden, aber ich habe mir das jetzt mehrmals durchgelesen und blicke nicht durch...

Ich habe also bis jetzt eine Form mit einer Methode Refreshing ( int i ) , die die Progresbar füllen sol:

        protected void Refreshing(int i)
        {
            this.pbar.Value = i;
        }

Die Methode die in ihrem eigenen Thread gestartet werden soll ist diese hier:

        public void makemove()
        {
            int j = 0;

            for (int i = 0; i<=100; i++)
            {
                for (j = 0 ; j<=100; j++)
                {
                    if (i % 2 == 0)
                    {
                        Invoke(j);
                    }
                    else
                    {
                        Invoke(j);
                    }                    
                    System.Threading.Thread.Sleep(10);
                }
            }
        }

Natürlich funktioniert es nicht wie es soll, es kommt immer ein CrossThread Fehler... kann mir jemand helfen und evtl ein bisschen erklären? thx

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo baer999,

du musst Control.Invoke aufrufen. Es gibt viele verschiedene Invoke-Methoden. Die genaue Aufrufsyntax findest du in dem Thread, durch den du gejagt zu werden befürchtest: [FAQ] Controls von Thread aktualisieren lassen (Invoke-/TreeView-Beispiel)

herbivore

Gelöschter Account
vor 17 Jahren

[FAQ] Controls von Thread aktualisieren lassen (Invoke-/TreeView-Beispiel)

das mit deinem invoke ist nicht korrekt.

edit:
herbi war mal wieder schneller

1.134 Beiträge seit 2004
vor 17 Jahren

Kleine Ergänzung noch. du kannst auch am Control BeginInvoke aufrufen .

Mein Stackoverflow Profil
Skype Name : Boas.Enkler (bitte einen hinweis in der Kontaktanfrage damit ich euch vom Spam unterscheiden kann)

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Haggy,

danke für den (indirekten) Hinweis. Ich habe die wichtigsten Unterschiede zwischen Invoke und BeginInvoke in die FAQ aufgenommen.

herbivore