![]() |
Verhalten von Threads
Hallo!
Frage: Ich habe folgenen Thread (wieder mal, jaja... :P):
Code:
Frage 1:
class SchleifenThread
{ public Thread Thread; #region Variablendeklaration public decimal UpperMaximum = 0; public string OutText, OutMD5; private char[] valueString; private int count = 0; private readonly char startChr = 'A', endChr = 'Z'; #endregion public SchleifenThread() { this.valueString = new char[128]; for (int i = 0; i < 128; i++) this.valueString[i] = this.startChr; this.valueString[0]--; this.Thread = new Thread(new ThreadStart(Execute)); } void Execute() { string Output; ListViewItem ActualItem; MD5 md5 = new MD5CryptoServiceProvider(); #region Schleife [...] #endregion } } Wenn ich SchleifenThread.Thread.Start(); mache, startet der Thread - klar. Was passiert, NACHDEM die Prozedurch Execute durchlaufen wurde? Frage 2: Wie kann ich den Thread pausieren bzw Stoppen? (von Suspend() und Resume() rät mir VS05 mit einer Warnung ab). Danke schon mal. Grüße Faux |
Re: Verhalten von Threads
Ich kappier eines nicht:
Nachdem ich den Thread zum ersten mal Starte, ruft er Execute() auf. Danach setzt er sich auf "Stopped". Wiekann ich ihn jetzt dazu bringen, dass er die Prozedur Execute() nochmal ausführt? :? |
Re: Verhalten von Threads
In dem du ihn neu startest.
|
Re: Verhalten von Threads
Zitat:
Delphi-Quellcode:
while(!Terminated)
{ } |
Re: Verhalten von Threads
Aus dem ThreadState "Stopped" bekommt man ihn nicht wieder "raus" also in Running?
|
Re: Verhalten von Threads
Ohne es ausprobiert zu haben: Einfach nochmal Start aufrufen, das setzt ihn wieder auf "Running".
Was nörgelt VS über Suspend? |
Re: Verhalten von Threads
Also wenn er "Stopped" ist, und ich Starte ihn, sagt VS, dass er bereits gestartet ist. Das versuchte ich als erstes. Der einzige State, der ein Start() verlangt ist "Unstarted"....
Warnung vom Visual Studio 2005: 'System.Threading.Thread.Suspend()' is obsolete: 'Thread.Suspend has been deprecated. Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources. http://go.microsoft.com/fwlink/?linkid=14202' |
Re: Verhalten von Threads
Zitat:
Zum Neustarten: Geht wohl nur durch eine neue Instanz. |
Re: Verhalten von Threads
Zitat:
Dumme Frage: Wie geht das in .NET? In Delphi Win32 macht man das mit Free und dann einfach neu Create, aber in .NET gibts IMHO kein Free (oä.) mehr, oder liege ich da falsch?! Oder kann ich meine Instanz mit einer Zuweisung von "new SchleifenThread();" einfach überschreiben? |
Re: Verhalten von Threads
Ja, sobald keine Referenz auf eine Instanz mehr existiert, schnappt sich der Garbage Collector diese und gibt sie frei. Der GC läuft aber in einem eigenen Thread, er muss nicht sofort die Instanz freigeben, da kann schon noch etwas Zeit vergehen.
[add] Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz