public async Task <string> RunInterfaceAsync(List <HistoryItem> history) { var historyToDisplay = history.Select(x => x.CmdLine).Distinct().ToList(); var control = Build(historyToDisplay); ConsoleManager.Setup(); ConsoleManager.Content = control; ConsoleManager.Resize(new ConsoleGUI.Space.Size(Console.WindowWidth, Console.WindowHeight)); ConsoleManager.AdjustWindowSize(); var inputListener = new IInputListener[] { this, listView, searchBox }; quit = false; while (!quit) { ConsoleManager.AdjustBufferSize(); ConsoleManager.ReadInput(inputListener); if (updateSearch) { updateSearch = false; var searchResults = historyToDisplay.Where(x => x.ToLowerInvariant().Contains(searchBox.Text.ToLowerInvariant())).ToList(); listView.Items = searchResults; } await Task.Delay(50); } return(listView.SelectedItem); }