Forum: PC-Programmierung [c#] Frage zu Threads und Wiederverwendung von Objekten


von NetiquetteIgnorierender (Gast)


Lesenswert?

Wenn ich

Thread thread = new Thread(meineFunktion);
thread.Start();
thread = new Thread(meineFunktion);
thread.Start();

in c# verwende, also zweimal hintereinander das Gleiche, läuft dann der 
erste Thread thread weiter, ich kann ihn aber nicht mehr mit Suspend 
oder ähnlich erreichen oder ersetzt der zweite Abschnitt den ersten?

von NetiquetteIgnorierender (Gast)


Lesenswert?

In anderen Worten, wenn ich in einer Schleife mehrere Threads erstellen 
will, die dann alle parallel laufen, wie greife ich dann jeweils auf die 
einzelnen threads zu?

von Markus (Gast)


Lesenswert?

Indem Du die erzeugten Thread-Objekte z.B. in eine Liste, ein Array oder 
sonst eine Collection steckst?

Grüße
Markus

von NetiquetteIgnorierender (Gast)


Lesenswert?

Meinst du mit dem Fragezeichen, daß du dir selbst nicht sicher bist? 
Dann warten wir lieber auf jemanden, der sich dabei sicher ist.

von Bastler (Gast)


Lesenswert?

Manchmal stellt man provozierende Frage, um dem gegenüber das 
Erfolgserlebnis der "Selbsterkennen" zukommen zu lassen.
Versteht aber nicht jeder.

von Mick (Gast)


Lesenswert?

Nein das Fragezeichen bedeutet: Hast du das jetzt wirklich gefragt? Und 
falls ja, verstehst du die Antwort?

von NetiquetteIgnorierender (Gast)


Lesenswert?

Bastler schrieb:
> Versteht aber nicht jeder.

Wenn das so ist, ist mir ist das zu blöd.

von Bastler (Gast)


Lesenswert?

NetiquetteIgnorierender schrieb:
> Bastler schrieb:
>> Versteht aber nicht jeder.
>
> Wenn das so ist, ist mir ist das zu blöd.

Naja, die ursprüngliche Frage war ja nicht wirklich unlösbar. Das nicht 
verstehen zu wollen, entzieht sich mir als 
"vor-Copy&Paste-Generations-Geborener". Ich will Dinge wissen. Nachteil 
ist nur, man ist nicht täglich "exited" wegen Dingen, die nicht wirklich 
neu sind.

von Marcus W. (marcusaw)


Lesenswert?

NetiquetteIgnorierender schrieb:
> Wenn ich
> ....
> ....
> in c# verwende,

So macht man das nicht - für soetwas benutzt man einen Stack oder gleich 
eine Collection. Das schöne an C# ist, dass du für so ziemlich alles 
irgendeinen Container basteln kannst, in die du alles reinfüllst - und 
rausschmeißt.

von bluppdidupp (Gast)


Lesenswert?

NetiquetteIgnorierender schrieb:
> in c# verwende, also zweimal hintereinander das Gleiche, läuft dann der
> erste Thread thread weiter, ich kann ihn aber nicht mehr mit Suspend
> oder ähnlich erreichen oder ersetzt der zweite Abschnitt den ersten?

Es laufen beide Threads, der erste wird nicht gestoppt. Du kannst auf 
den ersten aber über "thread" nicht mehr zugreifen. Wie schon erwähnt, 
würde man die gestarteten Threads dann wohl eher mit einer der 
Collection-Klassen verwalten.

btw:
"Do not use the Suspend and Resume methods to synchronize the activities 
of threads. You have no way of knowing what code a thread is executing 
when you suspend it. If you suspend a thread while it holds locks during 
a security permission evaluation, other threads in the AppDomain might 
be blocked. If you suspend a thread while it is executing a class 
constructor, other threads in the AppDomain that attempt to use that 
class are blocked. Deadlocks can occur very easily."
...zudem ist .Suspend() als "Obsolete"-markiert und sollte 
Compiler-Warnungen verursachen! Falls Thread-Synchronisierung 
erforderlich ist, besser danach googlen, da sollte man richtige Lösungen 
finden können ;D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.