keldish, расчет запускаем в отдельном потоке, на события клавиатуры вешаем обработчики при нажатии кнопки сохраняем в поле, при отпускании очищаем поле, в потоке мониторим это поле, ну и в потоке, через диспатчер обновление диаграммы запускаем.
Но только смешивать таким макаром статику и все остальное, жуть одним словом. В MVC и Razor все реализовано нормально, можно и шаблон по умолчанию сделать. Если нет желания с контроллерами разбираться или писать их, есть RazorPages, а привязывать так статику изврат полный, на каждую страницу делегат писать будете? А если потом поменять? За вас все уже придумали, научится надо пользоваться и все.
Макс, Все linq методы To... Означают лишь немедленное исполнение запроса. При отложенном запросе, есть возможность комбинировать и добавлять запросы, однако при foreach запрос исполняется абсолютно идентично To....
Макс, с чего так работать не будет? Если на то пошло IQueryable наследник IEnumerable. Советую почитать как работает foreach. И если бы db.Employee.Where.... не поддерживал бы перечисление с помощью foreach, была бы ошибка компилятора.
а зачем Thread.Sleep? Вы как раз поток притормаживаете, вот и нагрузка, просто бесконечный цикл и все. Лучше думаю вызывать даже Thread.Yield, чтобы чтобы не занимать процессор постоянно потоком.