public async Task Rollback() { if (CurrentPath.ContainsKey(Context.ConnectionId) && CurrentPath[Context.ConnectionId]?.Path?.Length > 0) { await UpdateCurrent(new PathData()); } else { lock (lockObj) { var target = HistoryPaths.LastOrDefault(); if (target == null) { return; } HistoryPaths.Remove(target); Clients.All.SendAsync("removeLastHistory").GetAwaiter().GetResult(); } } }