public override void Run()
 {
     try
     {
         signal.Wait();
         manager.MaybeRefresh();
         writer.DeleteDocuments(new TermQuery(new Term("foo", "barista")));
         manager.MaybeRefresh(); // kick off another reopen so we inc. the internal gen
     }
     catch (Exception e) when(e.IsException())
     {
         e.printStackTrace();
     }
     finally
     {
         latch.Reset(latch.CurrentCount == 0 ? 0 : latch.CurrentCount - 1); // let the add below finish
     }
 }
 public override void Run()
 {
     try
     {
         Signal.@await();
         Manager.MaybeRefresh();
         Writer.DeleteDocuments(new TermQuery(new Term("foo", "barista")));
         Manager.MaybeRefresh(); // kick off another reopen so we inc. the internal gen
     }
     catch (Exception e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
     finally
     {
         Latch.countDown(); // let the add below finish
     }
 }