Forum: PC-Programmierung Threads beenden und starten von.


von Fidelis Sobotta (Gast)


Lesenswert?

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.

: Gesperrt durch User
von Robert L. (lrlr)


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 ??

von Fidelis Sobotta (Gast)


Lesenswert?

Du hast das Problem nicht erkannt.

von Fidelis Sobotta (Gast)


Lesenswert?

stre läßt sich nicht starten, weil wegen einem ungültigen Threadzustand. 
Vemutlich weil stre nicht im Hauptthread neugestartet wird, von dem es 
zuerst gestartet wurde.

von Klaus Dieter (Gast)


Lesenswert?

Ein bisschen mehr Arroganz bitte!

von Rolf M. (rmagnus)


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.

von Fidelis Sobotta (Gast)


Lesenswert?

stre läßt sich nicht starten, weil wegen einem ungültigen Threadzustand.
Vemutlich weil stre nicht im Hauptthread neugestartet wird, von dem es
zuerst gestartet wurde.

von Kan a. (Firma: Basta) (kanasta)


Lesenswert?

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.

von Fidelis Sobotta (Gast)


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.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Fidelis Sobotta schrieb:
> Zugreifen, also Beenden
> funktioniert, aber neu starten nicht.

normalerweise kann man Threads nicht neustarten.

von Kan a. (Firma: Basta) (kanasta)


Lesenswert?

versuch mal, einen neuen Thread zu starten, anstatt einen alten Thread 
neuzustarten.

von Jasch (Gast)


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.

von Fidelis Sobotta (Gast)


Lesenswert?

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?

von Cyblord -. (cyblord)


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

von Fidelis Sobotta (Gast)


Lesenswert?

cyblord ---- schrieb:
> Wieso muss sich der Thread beenden bevor er neue Parameter bekommt?
Stelle keine Fragen, auf die du keine Antwort willst.

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

von Rolf M. (rmagnus)


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?

von Purzel H. (hacky)


Lesenswert?

Weshlb den Thread nicht durchlaufen lassen? Was soll ein abbruch denn 
bringen?

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Die WindowsAPI z.b. bietet die Funktion TerminateThread für Killen von 
Thread von Außerhalb des Threads.

Hat da C-Sharp nichts ?

von hugo westphal (Gast)


Lesenswert?

Dennis Heynlein schrieb:
> Hat da C-Sharp nichts ?
M.W. hat C# hat einen Garbage Collector dafür.

von Fidelis Sobotta (Gast)


Lesenswert?

Rolf Magnus schrieb:
> 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:
Es heißt genau das, was ich schreibe.

von Alex W. (a20q90)


Lesenswert?

Fidelis Sobotta schrieb:
> Rolf Magnus schrieb:
>> 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:
> Es heißt genau das, was ich schreibe.

Genau! Und bitte hier und in Deutsch antworten!

von Rolf M. (rmagnus)


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.

von mar io (Gast)


Lesenswert?

Fidelis Sobotta schrieb:
> Ich übergebe einem Thread neue Parameter. Wie soll ich das ohne Neustart
> tun?

Wahrscheinlich ist dein Ansatz falsch! Wenn Du uns verrätst was dieser 
"Thread" genau machen soll, dann kann man dir weiter helfen bzw. einen 
guten Ansatz für eine Lösung vermitteln.

von mar io (Gast)


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.