private void CompleteWithContextLock()
 {
     if (Monitor.TryEnter(Self._contextLock))
     {
         try
         {
             Self.OnWriteCompleted(this);
         }
         finally
         {
             Monitor.Exit(Self._contextLock);
         }
     }
     else
     {
         Self._threadPool.UnsafeRun(_completeWrite, this);
     }
 }
 public void CompleteWithContextLock()
 {
     if (Monitor.TryEnter(Self._contextLock))
     {
         try
         {
             Self.OnWriteCompleted(this);
         }
         finally
         {
             Monitor.Exit(Self._contextLock);
         }
     }
     else
     {
         ThreadPool.QueueUserWorkItem(_completeWrite, this);
     }
 }