Entwickler-Ecke

Basistechnologien - Threads


Flash106 - Fr 30.03.07 10:14
Titel: Threads
Hallo,

ich bräuchte einen Thread hab das aber in C# noch nie gemacht. Den Thread kriege ich so schon zum laufen und die Methode die Aufgerufen wirt, wirft dann den Fehler das ein anderer Thread als der den ich gemacht habe dafür zuständig is. Hier mal code:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Thread[] DeleteThread = new Thread[1];
DeleteThread[0] = new Thread(new ThreadStart(DeleteAll)); // Thread wird erzeugt
DeleteThread[0].Start(); // Threads wird gestartet
...
private void DeleteAll()
{
  string[] files = Files; //<--Files wurd global deklariert, da ich keine Parametisierte Methode im Thread starten konnte

  for (int i = 0; i < files.Length; i++)
  {
    progressBarAll.Maximum = (int)files.Length; //<-- Da kommt schon der Fehler
...

Wie macht man denn am besten einen Thread für sowas? Ich will ja nur nicht das mein ganzen Programm still steht wenn DeleteAll aufgerufen wird und arbeitet.


Christian S. - Fr 30.03.07 10:39

Hallo!

Schau Dir mal die Hilfe zur Invoke-Methode der Form an (ich weiß nicht, ab welcher Klasse das vorhanden ist, aber Form hat's bestimmt ;-))

Grüße
Christian


Flash106 - Fr 30.03.07 10:52

Hm hab mir ein paar bsp angesehen. Hab nich alles verstanden, aber soll ich jetz alle Sachen die etwas ander GUI ändern in eine extra methode stopfen und das mit dieser Invoke sachen benutzen oO. Sehe noch nich so ganz durch..


Christian S. - Fr 30.03.07 10:54

user profile iconFlash106 hat folgendes geschrieben:
aber soll ich jetz alle Sachen die etwas ander GUI ändern in eine extra methode stopfen und das mit dieser Invoke sachen benutzen oO.
Ja, genau. Invoke sorgt dafür, dass Zugriffe auf die GUI auch im "GUI-Thread" ausgeführt werden. Damit wird verhindert, dass sich da zwei Threads in die Haare kriegen.


Flash106 - Fr 30.03.07 12:16

So hab Invoke eingebaut und der Fehler ist weg. Allerdings "hängt" mein Programm immernoch wenn DeleteAll läuft. Ich möchte aber gerne das man dann immer noch mit dem Programm interagieren kann óò...


Flash106 - Fr 30.03.07 12:20

Nein mist sorry hat sich erledigt. Hatte das starten des thread ausgeklammer ^^