Threads beenden und starten von.

#2596027
Lesenswert?
• ▲
▼
naja (ich weiß nicht was für programmiesprache das ist (laut link c#), 
aber ich glaube das passt:)

>. How to stop .... the thread

gar nicht,
der muss sich SELBER beenden..

Abort():

>Raises a ThreadAbortException in the thread on which it is invoked, to
>begin the process of terminating the thread. Calling this method usually
>terminates the thread.

zwischen deinem Abort und start ist ja NIX..

wie soll der thread da irgendwas machen können ??
#2596083
Lesenswert?
• ▲
▼
Fidelis Sobotta schrieb:
> Du hast das Problem nicht erkannt.

"Das glaube ich nicht, Tim!"

Solange dein Thread das Abort nicht angenommen hat, läuft er noch und 
ist im Zustand AbortRequested. Da du aber sofort danach versuchst, ihn 
neu zu starten, hat er ja noch gar keine Zeit gehabt, den Abort-Request 
anzunehmen.
Nur zum Verständnis: Threads bricht man niemals einfach so ab. Man 
läßt sie sich selbst beenden.
Gast #2596506
Lesenswert?
• ▲
▼
Kan asta schrieb:
> Normalerweise sollte sich ein Thread selbst beenden.
>
> Mach doch ne globale Variable als Kill-Flag, in das
> das Hauptprogramm schreiben darf, und welches im
> Thread gelesen wird. Sobald der Thread kill=true
> erkennt, beendet er sich selbst.

Es geht nicht ums Beenden sondern ums Starten, das wegen einem 
ungültigen Threadzustand nicht funktioniert. Zugreifen, also Beenden 
funktioniert, aber neu starten nicht.
Gast #2597302
Lesenswert?
• ▲
▼
Fidelis Sobotta schrieb:
> Ich habe folgendes Problem unter
> 
http://bytes.com/topic/c-sharp/answers/935867-stop-run-thread-some-place#post3709890.
>
> Bitte hier und in Deutsch antworten.

Was die Doku dazu sagt:

"Once the thread terminates, it cannot be restarted with another call to 
Start."

Oder in Deutsch: wenn ein Thread beendet ist kann er nicht mit einem 
Aufruf von Start() erneut gestartet werden.

Hmm, liest eigentlich niemand mehr die Doku von irgendwelchem Zeug? Tsk, 
tsk, tsk.
#2597316
Lesenswert?
• ▲
▼
Fidelis Sobotta schrieb:
> Jasch schrieb:
>> Oder in Deutsch: wenn ein Thread beendet ist kann er nicht mit einem
>> Aufruf von Start() erneut gestartet werden.
>
> Ich übergebe einem Thread neue Parameter. Wie soll ich das ohne Neustart
> tun?

Wieso muss sich der Thread beenden bevor er neue Parameter bekommt?

Du hast 2 Möglichkeiten:

1.) Thread nicht beenden, sondern nur neue Daten füttern.
2.) Thread beenden und einen neuen Thread starten

gruß cyblord
#2597336
Lesenswert?
• ▲
▼
Fidelis Sobotta schrieb:
> cyblord ---- schrieb:
>> Wieso muss sich der Thread beenden bevor er neue Parameter bekommt?
> Stelle keine Fragen, auf die du keine Antwort willst.

Sollte besser heißen: Stelle keine Fragen, wenn eh schon klar ist, daß 
dein Gegenüber sie nicht versteht.
Man kann mit Threads auch recht einfach kommunizieren, während sie 
laufen und nicht nur durch Übergabe von Parametern beim Start. Das ist 
ja gerade das Tolle an Threads.

>> 2.) Thread beenden und einen neuen Thread starten
> Genau das geht nicht.

Wie kommst du darauf? Du hast bisher nur probiert, den alten Thread 
nochmal zu starten.

Hier mal zwei Links, die ich auf die Schnelle dazu gefunden hab:
http://msdn.microsoft.com/de-de/library/yy12yx1f(v=vs.80).aspx
http://msdn.microsoft.com/de-de/library/7a2f3ay4(v=vs.80).aspx

Aber wieso fragst du hier überhaupt, wenn du eh keinerlei Interesse an 
den Antworten hast?
#2598611
Lesenswert?
• ▲
▼
Ah, also hat es, wie ich schon vermutet habe, keinen Sinn, dir weiter zu 
antworten, da du an Antworten eh nicht interessiert bist und keine Lust 
hast, das eigentliche Problem wirklich zu verstehen. Das sieht man ja 
auch schon daran, daß du bisher sämtliche Vorschläge einfach ignoriert 
hast.
Wenn du eh alles besser kannst als andere und der einzige bist, der 
Threads wirklich verstanden hat, dann hast du doch dein Problem sicher 
schon lange gelöst und brauchst gar keine Hilfe.
Gast #2599342
Lesenswert?
• ▲
▼
Fidelis Sobotta schrieb:
>> 2.) Thread beenden und einen neuen Thread starten
> Genau das geht nicht.

Das macht aber dein Code nicht und wenn er es machen würde, dann gibt es 
elegantere Lösungen.
1
private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
2
{
3
    if (stre != null)
4
    {
5
        stre.Abort();
6
    }
7
    stre.Start();
8
}
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.