Technical Blog
Articles from KomuraSoft on Windows development, C#, .NET, and related engineering topics.
If you need help with COM / ActiveX, C# / .NET, WPF / WinForms, Windows application modernization, design reviews, or bug investigation, please use the contact form.
ContactSearch Articles
Search by title, summary, tags, or article content.
-
What COM / ActiveX / OCX Are - A Practical Guide to the Differences and Relationships
The three terms COM / ActiveX / OCX tend to appear together in Windows legacy projects.
-
How to Choose Between PeriodicTimer, System.Threading.Timer, and DispatcherTimer - First Organize Periodic Work in .NET
In the previous article, A Practical Guide to Soft Real-Time on Windows - A Checklist for Reducing Latency, I organized how to avoid Sleep-driven periodic lo...
-
Why It Is Worth Bringing Generic Host / BackgroundService into a Desktop App - Startup, Lifetime, and Graceful Shutdown Become Much Easier to Organize
As a Windows tool or resident desktop app grows a little, the work outside the UI starts to increase gradually. Periodic polling, file watching, reconnect lo...
-
How to Handle ActiveX / OCX Today - A Decision Table for Keep / Wrap / Replace
Projects that still mention ActiveX / OCX usually come with a certain heaviness in the air.
-
How to Turn C# into a Native DLL with Native AOT - Calling UnmanagedCallersOnly Exports from C/C++
How to Turn C# into a Native DLL with Native AOT - Calling UnmanagedCallersOnly Exports from C/C++
-
WPF / WinForms async/await and the UI Thread in One Sheet - Where Continuations Return, Dispatcher, ConfigureAwait, and Why .Result / .Wait() Get Stuck
The easiest place to get lost when using async / await in WPF / WinForms is which thread execution returns to after await, and when it is safe to touch the U...
-
When an Industrial Camera Control App Suddenly Crashes After a Month (Part 2) - What Application Verifier Is and How to Build Failure-Path Test Infrastructure
Application Verifier is a very strong tool when you want to surface strange behavior around Windows native code or Win32 boundaries earlier than normal testi...
-
When an Industrial Camera Control App Suddenly Crashes After a Month (Part 1) - How to Find a Handle Leak and Design Logging for Long-Running Operation
When a Windows application suddenly crashes only after running for a long time, it is very common to suspect a memory leak first. But in practice, the main c...
-
When Industrial Camera TCP Traffic Stops for Several Seconds - How to Narrow Down Retransmission Waits with RFC1323 Timestamps
When Industrial Camera TCP Traffic Stops for Several Seconds - How to Narrow Down Retransmission Waits with RFC1323 Timestamps
-
How to Use FileSystemWatcher Safely - Lost Events, Duplicate Notifications, and the Traps Around Completion Detection
FileSystemWatcher is one of the first APIs people reach for when monitoring file changes on Windows from .NET. But if you use Created or Changed as if they w...
-
What Media Foundation Is - Why It Starts to Feel Like COM and Windows Media APIs at the Same Time
When you first start touching Media Foundation, it often feels like this:
-
C# async/await Best Practices - A Decision Table for Task.Run and ConfigureAwait
C# async / await is something we use all the time, but in real projects the confusing part is usually not the syntax itself. What makes people hesitate is wh...
-
A Practical Guide to Soft Real-Time on Windows - A Checklist for Reducing Latency
A Practical Guide to Soft Real-Time on Windows - A Checklist for Reducing Latency
-
Safe File Integration Locking - Best Practices for File Locks, Atomic Claims, and Idempotent Processing
Safe File Integration Locking - Best Practices for File Locks, Atomic Claims, and Idempotent Processing
-
Why a C++/CLI Wrapper Is Often the Best Way to Use a Native DLL from C# - A Practical Comparison with P/Invoke
Why a C++/CLI Wrapper Is Often the Best Way to Use a Native DLL from C# - A Practical Comparison with P/Invoke
-
What an HCP Chart Is - How to Use MakingHCPChartSkill to Turn HCP-DSL into Deterministic SVG
What an HCP Chart Is - How to Use MakingHCPChartSkill to Turn HCP-DSL into Deterministic SVG
-
COM STA/MTA Basics - Threading Models and How to Avoid Hangs
COM STA/MTA Basics - Threading Models and How to Avoid Hangs
-
How to Call a 64-bit DLL from a 32-bit Application - A Practical COM Bridge Case Study
How to Call a 64-bit DLL from a 32-bit Application - A Practical COM Bridge Case Study
-
What COM Is - Why Windows COM Still Feels Beautifully Designed
What COM Is - Why Windows COM Still Feels Beautifully Designed
-
Launching the KomuraSoft Technical Blog - A New Windows / C# / COM Engineering Blog
KomuraSoft has launched its technical blog.