Блог
Практические статьи KomuraSoft LLC о разработке сайтов, SEO, Google Ads, разработке для Windows, использовании существующих систем и расследовании сбоев.
ИИ-поиск по всему сайту
Поисковые запросы передаются в Cloudflare AI Search для формирования результатов. Не вводите персональные данные.
-
Три таймера .NET: как выбирать PeriodicTimer, Timer и DispatcherTimer
Чем отличаются PeriodicTimer, System.Threading.Timer и DispatcherTimer и как выбирать между ними для async-работы, callback на ThreadPool и обновления UI в WPF.
-
Как вызвать Native AOT DLL на C# из C/C++
Как опубликовать библиотеку классов C# как нативную DLL через Native AOT и вызывать точки входа UnmanagedCallersOnly из C/C++: когда схема уместна, какие пат...
-
Зачем использовать .NET Generic Host и BackgroundService в десктопных приложениях
Как с помощью Generic Host и BackgroundService собрать запуск, периодическую работу, завершение, логи, конфигурацию и DI в Windows-инструментах и фоновых при...
-
Как сегодня поступать с ActiveX / OCX: оставить, обернуть или заменить
Как выбрать, оставить, обернуть или заменить ActiveX / OCX, с учётом 32-бит/64-бит, регистрации, зависимости от браузера и поддержки вендора.
-
WPF и WinForms: async/await и поток UI
Куда после await возвращается выполнение в WPF и WinForms, как работают Dispatcher и Invoke, зачем ConfigureAwait(false) и почему .Result и .Wait() вешают UI.
-
Application Verifier: инфраструктура тестов нештатных путей Windows
Разбираем, что такое Application Verifier, и как с Handles, Heaps, Low Resource Simulation и !htrace строить инфраструктуру тестов нештатных путей Windows.
-
Утечка хендлов: почему приложение промышленной камеры падает после месяца работы
На примере приложения управления промышленной камерой разбираем, как смотреть на Windows-приложение, которое внезапно падает после длительной работы: как нах...
-
Почему повторная передача TCP останавливает обмен с промышленной камерой и как это диагностировать
Как диагностировать остановку обмена с промышленной камерой на несколько секунд из-за повторной передачи TCP: потеря пакетов, RTO, метки времени RFC1323 и на...
-
Практическое руководство по FileSystemWatcher — как не терять уведомления и что делать с дублями
Как пользоваться FileSystemWatcher и где он подводит: потерянные уведомления, дубли, ловушки определения готовности, повторное сканирование, атомарный claim ...
-
Введение в 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 — вместе с таблицей решений.
-
Практическое руководство: soft real-time на обычной Windows
Как стабилизировать периодическую обработку и низкую задержку на обычной Windows: разрешение таймера, приоритеты, питание и способы измерения.
-
Интеграция через файлы: блокировки, атомарный claim и практические рекомендации
Разбираем исключительный доступ при интеграции через файлы — файловые блокировки, атомарный claim, схема temp -> rename и идемпотентность — и собираем приёмы...
-
Вызов нативной DLL из C#: обёртка на C++/CLI или P/Invoke
Когда из C# вызывают нативную DLL, разбираем, где хватает P/Invoke, а где выгоднее тонкая обёртка на C++/CLI — по владению, исключениям, типам C++ и обратным...
-
HCP-диаграмма и MakingHCPChartSkill: с чего начать
Что такое HCP-диаграмма и как MakingHCPChartSkill превращает HCP-DSL в детерминированный SVG: цепочка генерации, как читать рисунок и как этим пользоваться.
-
STA и MTA в COM: модель потоков и как не получить зависание
STA и MTA в COM — модель апартаментов, которая задаёт, с какого потока можно вызывать компонент. Разбираем UI-поток, цикл сообщений, маршалинг и почему вызов...
-
Пример COM-моста: вызов 64-битной DLL из 32-битного приложения
32-битное приложение не может напрямую вызвать 64-битную DLL. Разбираем, как связать их COM-мостом: ограничение Windows, схема и ход вызова.
-
Что такое COM — почему дизайн Windows COM до сих пор красив
Разбираем, что такое COM: интерфейсы Windows COM, IUnknown, GUID и бинарная совместимость — и почему эта модель работает до сих пор.
-
Открыли технический блог — Windows / C# / COM
Объявление об открытии технического блога KomuraSoft LLC. Публикуем материалы по разработке под Windows, C# / .NET, COM, проектированию и инструментам разраб...