using System;
using System.Threading;namespace MultiThreadApplication
{
class Class1
{
private ReaderWriterLock rwl = new ReaderWriterLock();
private long myNumber;
public long Number   // the Number property
{
get
{
//Acquire a read lock on the resource.
rwl.AcquireReaderLock(Timeout.Infinite);                
try
{
Console.WriteLine("Thread:{0} starts getting the Number", Thread.CurrentThread.GetHashCode());
Thread.Sleep(50);
Console.WriteLine("Thread:{0} got the Number", Thread.CurrentThread.GetHashCode()); }
finally
{
//Release the lock.
rwl.ReleaseReaderLock();
}
return myNumber;
}
set
{
//Acquire a write lock on the resource.
rwl.AcquireWriterLock(Timeout.Infinite);
try
{
Console.WriteLine("Thread: {0} start writing the Number", Thread.CurrentThread.GetHashCode());
Thread.Sleep(50);
myNumber = value;
Console.WriteLine("Thread: {0} written the Number", Thread.CurrentThread.GetHashCode());
}
finally
{
//Release the lock.
rwl.ReleaseWriterLock();
}
}
}问题 get{}中先执行rwl.ReleaseReaderLock();
又执行return myNumber;
会出不会出问题!总感觉不太对劲啊!
出处:http://support.microsoft.com/kb/816161/zh-cn