Console.WriteLine(Thrd.Name + " Count = " + SharedRes.Count);
}
}
}
// SharedRes.Count , class DecThread { public Thread Thrd;
public DecThread(string name) {
Thrd = new Thread(this.Run);
Thrd.Name = name;
Thrd.Start();
}
// , void Run() {
for(int i=0; i<5; i++) {
Interlocked.Decrement(ref SharedRes.Count);
Console.WriteLine(Thrd.Name + " Count = " + SharedRes.Count);
}
}
}
class InterlockedDemo { static void Main() {
// .
IncThread mtl = new IncThread(" "); DecThread mt2 = new DecThread(" ");
Mtl.Thrd.Join(); mt2.Thrd.Join();
}
}
, .NET Framework 4.0
, Semaphore AutoResetEvent, .NET Framework, 1.1.
, .NET Framework. .NET Framework 4.0 . .
Barrier
,
CountdownEvent
,
ManualResetEventSlim
ManualResetEvent
Semaphoreslim
Semaphore
, , , .
. , - . .
Thread. Abort (). .
Public void Abort()
Abort () ThreadAbortException , . , , . Abort () , , , Abort () Join (). , Abort () . , , , finally .
|
|
Abort () .
// Abort().
Using System;
Using System.Threading;
class MyThread {
Public Thread Thrd;
public MyThread(string name) {
Thrd = new Thread(this.Run);
Thrd.Name = name;
Thrd.Start();
// , void Run() {
Console.WriteLine(Thrd.Name + " .");
for (int i = 1; i <= 1000; i++) {
Console.Write(i + " "); if((i %10)==0) {
Console.WriteLine();
Thread.Sleep(250);
}
}
Console.WriteLine (Thrd.Name + 11 .");
}
}
class StopDemo {
static void Main() {
MyThread mtl = new MyThread(" ");
Thread.Sleep (1000); //
Console.WriteLine(" ."); mtl.Thrd.Abort();
mtl.Thrd.Join(); // Console.WriteLine(" .");
}
}