title: Rework EventWaitHandle to asynchronously await signal
body: <p>I need to change current code to not block current thread when EventWaitHandle.WaitOne is called. Problem is that I am awaiting system-wide event. I did not find any proper replacement yet.</p>
  
  <p>Code:</p>
  
  <pre><code>EventWaitHandle handle = new EventWaitHandle(false, EventResetMode.AutoReset, "Local event", out screenLoadedSignalMutexWasCreated);
  
          StartOtherApp();
  
          if (screenLoadedSignalMutexWasCreated)
          {
              isOtherAppFullyLoaded = handle.WaitOne(45000, true);
  
              if (isOtherAppFullyLoaded )
              {
                  // do stuff
              }
              else
              {
                  // do stuff
              }
  
              handle.Dispose();
              signalingCompleted = true;
          }
          else
          {
              isOtherAppFullyLoaded = false;
              throw new Exception(" ");
          }
  </code></pre>
  
  <p>I need app to continue and not stop on the line where I call WaitOne, ideally there would be await. How can I implement this ?</p>