Start Debugging

Тег: how-to

65 статей · Страница1из7

Как отбросить буферизованные нажатия клавиш перед Console.ReadKey в игровом цикле консольного приложения на C#
Очищайте буфер ввода консоли с помощью while (Console.KeyAvailable) Console.ReadKey(true) перед ожиданием новой клавиши и делайте это в каждом кадре игрового цикла, чтобы автоповтор не копился. Как устроен буфер в Windows и Unix в .NET 10, почему зажатые клавиши отстают, ловушка с эхо в Unix и FlushConsoleInputBuffer.
Как проверить, отслеживается ли сущность в DbContext, перед её подключением в EF Core
Используйте DbSet.Local.FindEntry(key), чтобы спросить у трекера изменений, отслеживается ли сущность с заданным ключом, без обращения к базе данных и без перебора. Почему Entry(entity).State вводит в заблуждение, почему Find выполняет запрос, и проверенный помощник AttachOrMerge для EF Core 10.
Как синхронизировать выбранную вкладку NavigationBar с текущим маршрутом через StatefulShellRoute в go_router
Берите NavigationBar.selectedIndex из StatefulNavigationShell.currentIndex, а не из поля setState или копии, сделанной в initState. Замеры на Flutter 3.44.8 и go_router 18.0.2: какие подходы рассинхронизируются при deep link, context.go и переходах между ветками, почему индекс по location обманывает и как реагировать на смену вкладок через didUpdateWidget.
Как сопоставлять вложенные скобки и сбалансированные теги с помощью балансирующих групп в .NET Regex
Балансирующие группы (?<name>) и (?<-name>) превращают группу захвата в .NET regex в стек, поэтому одним шаблоном можно сопоставлять произвольно вложенные скобки или теги <div>. Полный шаблон, как работает стек, захват внутреннего содержимого через (?<inner-open>) и подводные камни, проверенные на .NET 11 RC1: проверка пустого стека, катастрофический откат, NonBacktracking и смешанные типы скобок.
Как добавить полный открытый ключ сборки со строгим именем в InternalsVisibleTo в проекте SDK-стиля
Подписанная сборка должна указывать дружественную сборку по полному открытому ключу из 320 символов, а не по токену, иначе сборка падает с CS1726 или CS0281. Получите ключ с помощью sn -p и sn -tp или кроссплатформенного скрипта на .NET, затем поместите его в метаданные Key элемента InternalsVisibleTo в .csproj. Также разобраны запасной вариант со свойством PublicKey, ключ DynamicProxyGenAssembly2 для Moq и ловушка с переносами строк.
Как отслеживать блокировку, разблокировку, вход и выход из сеанса Windows в приложении на C#
Используйте SystemEvents.SessionSwitch в настольном или консольном приложении, переопределите OnSessionChange в службе Windows или перехватывайте WM_WTSSESSION_CHANGE самостоятельно. Код на .NET 10 для всех трёх вариантов, скрытый поток '.NET System Events', почему служба видит вход в систему, а настольное приложение нет, уведомления не по порядку и как узнать текущее состояние блокировки через WTSQuerySessionInformation.
Как задать параметры сеанса PostgreSQL, такие как search_path или statement_timeout, для каждого подключения EF Core с Npgsql
Однократно выполненный SET стирается командой DISCARD ALL в тот момент, когда Npgsql возвращает подключение в пул. Передайте search_path и statement_timeout в стартовом пакете через ключевые слова строки подключения Search Path и Options, а при необходимости используйте ALTER ROLE или перехватчик ConnectionOpened, и узнайте, почему UsePhysicalConnectionInitializer молча теряет свой SET.
2026-09-27 dartfluttervs-code
Как ускорить медленный сервер анализа Dart в VS Code для большого монорепозитория Flutter
Монорепозиторий с десятками файлов pubspec.yaml заставляет сервер анализа Dart строить по контексту анализа на каждый пакет, и именно туда уходят память и минутный запуск. Переведите репозиторий на pub workspace, исключите сгенерированный код в analysis_options.yaml, откажитесь от устаревших плагинов анализатора и подтвердите результат на странице Insights. Измерено на Dart 3.12.2: в 2.3 раза меньше пиковой памяти и вдвое меньше времени холодного анализа.
Как добавить id текущего пользователя в каждую запись журнала в ASP.NET Core
Middleware с BeginScope пропускает запись об ошибке от обработчика исключений и строку Request finished. Зарегистрируйте ILogEnricher, который читает пользователя из IHttpContextAccessor, открывайте scope только тогда, когда работа выходит за пределы запроса, и учтите, что AddSerilog из Serilog молча отключает обогащение.
Как атомарно добавить элемент в массив jsonb в PostgreSQL с EF Core и Npgsql
Загрузка сущности, вызов List.Add и сохранение перезаписывают весь документ jsonb и незаметно теряют параллельные добавления. Перенесите добавление в один UPDATE с оператором jsonb ||, через ExecuteSqlAsync или через сопоставленную функцию внутри ExecuteUpdateAsync, и сделайте его идемпотентным с помощью проверки @>.
Вперёд