Autor Beitrag
Flash106
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


D7 Ent
BeitragVerfasst: Fr 30.03.07 10:14 
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:
ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Flash106 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


D7 Ent
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Flash106 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


D7 Ent
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


D7 Ent
BeitragVerfasst: Fr 30.03.07 12:20 
Nein mist sorry hat sich erledigt. Hatte das starten des thread ausgeklammer ^^