public async Task StartupServer(IPAddress address, ushort port) { using (var sync = await webServerLock.LockAsync(shutdownCancellationToken).ConfigureAwait(false)) { StopOldServer(); combinedWebServerTokenSource = CancellationTokenSource.CreateLinkedTokenSource(shutdownCancellationToken); webServer = new MediaWebServer(address, port); Trace.TraceInformation(Invariant($"Starting Web Server on {address}:{port}")); webServerTask = webServer.StartListening(combinedWebServerTokenSource.Token) .ContinueWith((x) => WebServerFinished(x), combinedWebServerTokenSource.Token); } }
public async Task StartupServer(IPAddress address, ushort port) { await webServerLock.WaitAsync(shutdownCancellationToken).ConfigureAwait(false); try { await StopOldServer().ConfigureAwait(false); webServerTokenSource = new CancellationTokenSource(); combinedWebServerTokenSource = CancellationTokenSource.CreateLinkedTokenSource(webServerTokenSource.Token, shutdownCancellationToken); webServer = new MediaWebServer(address, port); logger.LogInfo(Invariant($"Starting Web Server on {address}:{port}")); webServerTask = webServer.StartListening(combinedWebServerTokenSource.Token) .ContinueWith((x) => WebServerFinished(x), combinedWebServerTokenSource.Token); } finally { webServerLock.Release(); } }