> For the complete documentation index, see [llms.txt](https://andreyakinshin.gitbook.io/problembookdotnet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://andreyakinshin.gitbook.io/problembookdotnet/ru/multithreading/locksliminfinalizer-p.md).

# «LockSlimInFinalizer» (Задача)

Что выведет следующий код?

```csharp
class Foo
{
  private readonly ReaderWriterLockSlim lockSlim;

  public Foo(ReaderWriterLockSlim lockSlim)
  {
    this.lockSlim = lockSlim;
    lockSlim.EnterReadLock();
  }

  ~Foo()
  {
    Console.WriteLine("~Foo: start");
    try
    {
      if (lockSlim != null)
        lockSlim.ExitReadLock();
    }
    catch (Exception e)
    {
      Console.WriteLine("Exception: " + e.GetType().Name);
    }
    Console.WriteLine("~Foo: finish");
  }
}
void Main()
{
  var foo = new Foo(new ReaderWriterLockSlim());
  GC.Collect();
  GC.WaitForPendingFinalizers();
}
```

[Решение](/problembookdotnet/ru/multithreading/locksliminfinalizer-s.md)
