Threads

14/12/2008 - 01:14 von l.juenemann | Report spam
Hallo,

ich mache meinen ersten Schritte mit Threads und habe gerade versucht,
einen Thread zu Beenden unter Anwendung der Kennzeichnung eines
kritischen Bereichs. Mein Thread kommt jedoch erst garnicht soweit.
Noch bevor er überhaupt den Thread ausführt, wird er auch schon
abgebrochen. Ich habe dann zwischen Start() und Abort() Thread.Sleep
(100) eingefügt, die Schleife wird jedoch nicht vollstàndig
abgearbeitet.

Habe ich dass mit den kritischen Regionen falsch verstanden? Ich hatte
gedacht, dass vor Abbruch diese Region auf alle Fàlle ausgeführt wird.

Hier mal mein Versuch:

static void Main(string[] args)
{
ThreadStart operation = new ThreadStart(SimpleWork);

// Erstellt einen neuen Thread
Thread theThread = new Thread(operation);

// Beginnt die Durchführung der Arbeit in einem neuen
Thread
theThread.Start();
Thread.Sleep(10);
theThread.Abort();

Console.ReadKey();
}

static void SimpleWork()
{
Thread.BeginCriticalRegion();
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Thread: {0}",
Thread.CurrentThread.ManagedThreadId);

// Thread schlafgen legen, sodass andere Threads zum
Zug kommen
Thread.Sleep(10);
}
Thread.EndCriticalRegion();
}

mfg

Lothar
 

Lesen sie die antworten

#1 Thomas Scheidegger
14/12/2008 - 10:02 | Warnen spam
Hallo Lothar

Thread zu Beenden ...kritischen Bereichs
Thread.BeginCriticalRegion();



hat andere Bedeutung:

<URL:http://blogs.msdn.com/bclteam/archi...1.aspx>
"Critical regions don't really do much ..."
"...Note that critical regions may be poorly named"

und wenn man MSDN liest:
Thread.BeginCriticalRegion Method
<URL:http://msdn2.microsoft.com/en-us/li...n.aspx>

wird doch auch nirgends behauptet, dass in CR ein Abort
'verhindert/verzögert' wird?
Es geht hier offenbar nur darum,
dass ein 'Host' (ala MS SQL) dann bei Bedarf spezielle ('globalere')
Reaktionen unternehmen könnte...



Thomas Scheidegger - 'NETMaster'
http://dnetmaster.net/

Ähnliche fragen