Id say C# is great at doing what it was made for, easy desktop app development.
Note that I'm
not a C# developer in any way shape or form, and I only dabbed in the language many years ago (when it was new), so my experience, while not exactly zero, is very close to nought.
Two weeks ago, I designed (big word) and built a small HW watchdog from my Hyper-V server*.
I needed a service/daemon to kick it periodically, so I decided to write a Windows service.
In one afternoon I managed to write and test a Windows service that:
- is perfectly integrated in the service life cycle (Start/Stop/Enable/Disable etc.)
- reads and writes in separate threads to all available USB and real serial ports
- uses Windows logging system with a custom log, visible in Event Viewer
- is only about 100 lines of code (apart from some auto inserted boilerplate)
All of this in C# in Visual Studio Community.
I'm convinced that using any other language would not have been this easy and painless.
And, honestly, the language is quite interesting - though I'm sure I've used it in a very naïve and novice way.
* It hosts all of my remotely accessible stuff in a number of VMs, and I had experienced a couple of brown-outs that left it hanging.
Since I was going away for more than one month, I wanted to make sure it got rebooted properly in case of a hang.
It's based on a MKE04 Kinetis I had lying around, and it will reset the server (with escalation to a full power-off + power-on) if not kicked by disk activity plus messages on the serial.