示例#1
0
 public async Task StartAsync()
 {
     using (await InitLock.LockAsync().ConfigureAwait(false))
     {
         ListenNetworkStreamTask = ListenNetworkStreamAsync();
     }
 }
示例#2
0
        public async Task StopAsync()
        {
            try
            {
                using (await InitLock.LockAsync().ConfigureAwait(false))
                {
                    TcpListener.Stop();

                    if (AcceptTcpClientsTask != null)
                    {
                        await AcceptTcpClientsTask.ConfigureAwait(false);
                    }

                    using (await ClientsLock.LockAsync().ConfigureAwait(false))
                    {
                        foreach (var client in Clients)
                        {
                            client.RequestArrived -= TotClient_RequestArrived;
                            await client.StopAsync().ConfigureAwait(false);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogWarning <TotServer>(ex, LogLevel.Debug);
            }
            finally
            {
                Logger.LogInfo <TotServer>("Server stopped.");
            }
        }
示例#3
0
        public async Task StartAsync()
        {
            using (await InitLock.LockAsync().ConfigureAwait(false))
            {
                TcpListener.Start();

                AcceptTcpClientsTask = AcceptTcpClientsAsync();

                Logger.LogInfo <TotServer>("Server started.");
            }
        }
示例#4
0
        /// <summary>
        /// Also disposes the underlying TcpClient
        /// </summary>
        public async Task StopAsync()
        {
            try
            {
                using (await InitLock.LockAsync().ConfigureAwait(false))
                {
                    TcpClient?.Dispose();

                    if (ListenNetworkStreamTask != null)
                    {
                        await ListenNetworkStreamTask.ConfigureAwait(false);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogWarning <TotClient>(ex, LogLevel.Debug);
            }
        }