Wie starten Sie ein Thread in C# .Net 4.0?
Ich bin mit C# .Net4.0 in VS 2010.
Wie kann ich neu starten Thread
?
Sein, wie ich will Abort()
den thread Start()
es wieder von vorne?
Ist es möglich?
Im Allgemeinen
Das könnte Ihnen helfen :- [Neustart ein thread in C# 4.0][1] [1]: stackoverflow.com/questions/1054889/...
Die Anforderung zum beenden und starten der thread ist ein bisschen ungewöhnlich - was ist das problem Sie zu lösen versuchen?
ich habe einen server-thread, die erste initialisiert eine Steckdose und dann wieder und wieder akzeptiert eingehende verbindungen... können wir schließen den server so schließen Sie die Buchse ist es mit und breche den thread... jetzt will ich den server wieder starten, brauche ich die thread-Funktion wieder zu laufen...
Abort()
ing ein thread ist eine schlechte Idee. Welches problem wollen Sie lösen?Das könnte Ihnen helfen :- [Neustart ein thread in C# 4.0][1] [1]: stackoverflow.com/questions/1054889/...
Die Anforderung zum beenden und starten der thread ist ein bisschen ungewöhnlich - was ist das problem Sie zu lösen versuchen?
ich habe einen server-thread, die erste initialisiert eine Steckdose und dann wieder und wieder akzeptiert eingehende verbindungen... können wir schließen den server so schließen Sie die Buchse ist es mit und breche den thread... jetzt will ich den server wieder starten, brauche ich die thread-Funktion wieder zu laufen...
InformationsquelleAutor Shashwat | 2012-03-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
erstellen Sie eine neue Instanz von thread-und wieder ausgeführt wird.
thread1= new Thread();
thread1.start();
InformationsquelleAutor Siva
Abbrechen ein thread ist oft eine schlechte Idee. Er ist ein Berater. Wenn es eine unendliche Schleife eine boolean dient zum stoppen der thread ohne die Abtreibung.
Aufhören den thread, einfach den boolean auf false und in der Regel können Sie es später erneut starten.
run
solltevolatile
zu vermeiden, unbestimmte Wartezeit aufgrund von compiler-Optimierungen.Erwägen Sie die Verwendung
lock
vor allem bei der Einstellung der boolean-Wert. Noch besser, verwenden Sie es in Verbindung mitmonitor
. Schau mal hier: stackoverflow.com/questions/1559293/...Mein thread-Funktion startet, wenn ich auf server erstellen. Es führt einige Initialisierungen und geht dann in eine Endlosschleife mit sockel.Accept(). Kontrolle stecken bleibt bei dieser Aussage, so kann ich dies nicht verwenden lock-Methode.
Liest oder schreibt einen booleschen .NET ist garantiert atomaren. Also keine Sperre oder monitor erforderlich. stackoverflow.com/questions/59422/...
lock = = - monitor. Siehe hier oder hier
InformationsquelleAutor Julien
Thread.Abbruch garantiert nicht, dass der thread beendet wird. Zum Beispiel, wenn Sie haben eine lang laufende Abfrage Abbrechen, wird nicht zu einem Abbruch der Ausführung der Abfrage, oder die Löschung des Threads. In der Tat, der thread wird Leben, bis die Abfrage abgeschlossen ist.
Wenn Sie tun alles, was in verwalteten code und nicht immer eingesperrt, die von nicht verwalteten Ressourcen, und Sie müssen Abbrechen eines thread, thread.Abort() ist völlig in Ordnung.
Jedoch, Sie können nicht aufrufen, Starten Sie in einem thread, der beendet wurde. Sie haben, um einen anderen Thread, und rufen Sie Start auf diesem thread. Thread-Erstellung ist etwas teuer, Speicher-Weise, in der .NET (im Vergleich mit anderen Sprachen), so gibt es einige Nachteile.
InformationsquelleAutor Candide
Wenn Sie möchten, neu zu starten, den thread von Anfang an, Sie wirklich wollen, starten Sie die Ausführung von bestimmten Funktion (code flow) auf das Gewinde. Wenn du einen thread erstellst, und übergeben Sie eine Funktion, für die Ausführung eines thread ' s Leben wird beendet sein, sobald die Funktion beendet seine eigene Ausführung. Sie müssen nur den code ändern das design, die erlauben, starten Sie die Funktion mit neu einen neuen thread.
Aber für kurze Funktionen, die ich würde Ihnen raten, zu verwenden,- ThreadPool -.
InformationsquelleAutor Slava Kovalchuk
Da Sie verwenden .NET 4.0, wo MS eingeführt hatte, die "Kooperative Stornierung Framework". Lesen Sie mehr von dieser blog.
Direkten Umgang mit dem Thread ist (mehr und mehr) entmutigen.
InformationsquelleAutor Jiaji Wu