public Task StopListeningAsync()
 {
     return(SyncTask(() =>
     {
         if (_socket == null || _socket.IsInvalid)
         {
             throw new InvalidOperationException("Server isn't listening");
         }
         Event.EvHttpDelAcceptSocket(_evHttp, _socket);
         _socket = null;
     }));
 }
        void Start(EvHttpBoundSocket boundSocket)
        {
            _socket = boundSocket;
            if (_socket.IsInvalid)
            {
                Dispose();
                throw new IOException("Unable to bind to the specified address");
            }

            var tcs = new TaskCompletionSource <object>();

            _thread = new Thread(() => MainCycle(tcs))
            {
                Priority = ThreadPriority.Highest
            };
            _thread.Start();
            tcs.Task.Wait();
        }