Modernize .NET Apps: Avoid Fake Async with Task.RunModernize .NET Apps: Avoid Fake Async with Task.Run
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started
When modernizing legacy .NET apps, I often see this pattern: “Let’s wrap the sync code in Task.Run() and await it.” -> It looks async. -> It compiles async. -> But it’s fake async. What really happens: -> Blocking I/O is moved to the ThreadPool -> Threads are still consumed -> Under load, scalability gets worse, not better Task.Run() doesn’t turn synchronous database or API calls into non-blocking ones — it just hides the problem. I break this down (with better alternatives) in my full article: “Async Isn’t a Keyword: Modernizing a Legacy Synchronous .NET Application” If async “didn’t help” your .NET app then this might be why. -> [Medium Article]
Back to feed
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started