public async Task StartAsync() { using (await InitLock.LockAsync().ConfigureAwait(false)) { ListenNetworkStreamTask = ListenNetworkStreamAsync(); } }
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."); } }
public async Task StartAsync() { using (await InitLock.LockAsync().ConfigureAwait(false)) { TcpListener.Start(); AcceptTcpClientsTask = AcceptTcpClientsAsync(); Logger.LogInfo <TotServer>("Server started."); } }
/// <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); } }