Блог
Практические статьи KomuraSoft LLC о разработке сайтов, SEO, Google Ads, разработке для Windows, использовании существующих систем и расследовании сбоев.
ИИ-поиск по всему сайту
Поисковые запросы передаются в Cloudflare AI Search для формирования результатов. Не вводите персональные данные.
-
WPF/WinForms: async и UI-поток — сводка на одном листе
Разбираем, куда возвращается выполнение после await в WPF / WinForms, Dispatcher / Invoke, ConfigureAwait(false), а также узкие места вокруг .Result / .Wait().
-
Строим основу для тестирования нештатных сценариев Windows с помощью Application Verifier
Разбираем, что такое Application Verifier, вместе с построением основы для тестирования нештатных сценариев Windows с использованием Handles, Heaps, Low Reso...
-
Расследование краша промышленной камеры при длительной работе — часть про утечку хендлов
Разбираем, как смотреть на Windows-приложение, которое неожиданно падает после длительной работы, на примере приложения управления промышленной камерой — с т...
-
Почему TCP-ретрансмиссии останавливают связь с промышленной камерой, и как это диагностировать
Разбираем, как искать причину, когда связь с промышленной камерой останавливается на несколько секунд из-за TCP-ретрансмиссий: потери пакетов, RTO, метки вре...
-
Практическое руководство по FileSystemWatcher — защита от потерянных и повторяющихся уведомлений
Разбираем использование FileSystemWatcher и его подводные камни — потерянные уведомления, дублирующиеся события, ловушки определения завершения, повторное ск...
-
Введение в Media Foundation — понимание API через призму COM
Разбираем, что такое Media Foundation, вместе с базовой терминологией Windows-медиа-API — COM, HRESULT, IMFSourceReader, MFT — в том порядке, в котором стоит...
-
Практическая таблица решений для C# async/await — Task.Run и ConfigureAwait
Разбираем лучшие практики C# async/await — ожидание I/O, вычисления CPU, Task.Run, ConfigureAwait(false) и fire-and-forget — вместе с таблицей решений.
-
Практическое руководство по максимальному приближению к мягкому реальному времени на обычной Windows
Разбираем подход к стабилизации периодической обработки и обработки с низкой задержкой на обычной Windows — с точки зрения точности таймеров, приоритетов, на...
-
Основы взаимного исключения при файловой интеграции — лучшие практики файловых блокировок и атомарного claim
Разбираем взаимное исключение при файловой интеграции с точки зрения файловых блокировок, атомарного claim, схемы temp -> rename и идемпотентности, и рассмат...
-
Вызов нативных DLL из C#: обёртка на C++/CLI или P/Invoke
При использовании нативных DLL из C# разбираем, когда достаточно P/Invoke, а когда себя оправдывает обёртка на C++/CLI — с точки зрения владения объектами, и...