title: Correct usage of DBMS_ALERT in a.NET application
body: <p>I have a continuous running .NET app (Windows service) that keeps listening to an event table in Oracle and does stuff if an alert is fired.
  I'm using Oracle.ManagedDataAccess package.</p>
  
  <p>I'm using the DBMS_ALERT package to accomplish my goal.</p>
  
  <p>Following code is executed to listen to alerts:</p>
  
  <pre><code>string query = "BEGIN " +
                       "  dbms_alert.register(:Name);" +
                       "  dbms_alert.WaitOne(:Name, :Message, :Status, :timeout);" +
                       "  dbms_alert.remove(:Name);" +
                 "END;";
  </code></pre>
  
  <p>This is exactly what I could find in the Oracle documentation.</p>
  
  <p>The solution works, but I have 1 small <strong>problem</strong>
  When an alert is fired, my application starts doing its stuff, and in parallel I start listening again (async).
  But sometimes it takes a few seconds from removing the alert to re-registering the alert. And it happens on multiple occasions that I do miss alerts.</p>
  
  <p><strong>Questions</strong>
  1) Is there a way that I can keep listening, also when alerts are fired, so I don't miss any events?
  2) From a functional perspective, I find it strange that I have to register and remove the alert every time. Is this really necessary?</p>