如何在c#中创建自定义锁定语句?

aej*_*eje 2 c#

我想为c#编译器创建自定义语句以生成try finally块.就像锁定声明一样.

例如

private readonly ReaderWriterLockSlim _lockObject

private void MyMethod()
{
   MyWriteLock(lockObject)
   {

   }
}

private void MyMethod2()
{
   MyReadLock(lockObject)
   {

   }
}
Run Code Online (Sandbox Code Playgroud)

编译器应该为我生成以下代码

private void MyMethod()
{
   try
   {
     lockObject.EnterWriteLock();
     .. statetments for the method    
   }
   finally 
   {
     _lockObject.ExitWriteLock();
   }
}

private void MyMethod2()
{
   try
   {
     lockObject.EnterReadLock();
     .. statetments for the method    
   }
   finally 
   {
     _lockObject.ExitReadLock();
   }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

您无法在C#中创建自己的语句.你最接近try/finally的是一个using声明:

using (lockObject.AcquireReadToken())
{
}
Run Code Online (Sandbox Code Playgroud)

哪里AcquireReadToken()会获得一个读锁定,并返回一个IDisposable锁定处理时释放锁定.