private void RequestExecutionQueue_Errored(object sender, RequestShutdownEventArgs e) { // log message and shut down var message = new LogMessageParams() { MessageType = MessageType.Error, Message = e.Message }; var asyncToken = _listener.BeginAsyncOperation(nameof(RequestExecutionQueue_Errored)); Task.Run(async() => { await _jsonRpc.NotifyWithParameterObjectAsync(Methods.WindowLogMessageName, message).ConfigureAwait(false); // The "default" here is the cancellation token, which these methods don't use, hence the discard name await ShutdownAsync(_: default).ConfigureAwait(false);
private void RequestExecutionQueue_Errored(object?sender, RequestShutdownEventArgs e) { // log message and shut down Logger?.TraceWarning($"Request queue is requesting shutdown due to error: {e.Message}"); var message = new LogMessageParams() { MessageType = MessageType.Error, Message = e.Message }; var asyncToken = Listener.BeginAsyncOperation(nameof(RequestExecutionQueue_Errored)); _errorShutdownTask = Task.Run(async() => { Logger?.TraceInformation("Shutting down language server."); await JsonRpc.NotifyWithParameterObjectAsync(Methods.WindowLogMessageName, message).ConfigureAwait(false); ShutdownImpl(); ExitImpl(); }).CompletesAsyncOperation(asyncToken); }