И вот мой ответ здесь Таймер высокого разрешения
https://gist.github.com/DraTeots/436019368d32007284f8a12f1ba0f545
Работает на всех платформах (поэтому нет using Mono.Unix.Native;
) и имеет высокую точность везде, где StopWatch.IsHighPrecision == true
Его Elapsed
событие гарантированно не перекрывается (что может быть важно знать, поскольку изменения состояния внутри обработчика события могут остатьсянезащищенный от многопоточного доступа)
Вот как его использовать:
Console.WriteLine($"IsHighResolution = {HighResolutionTimer.IsHighResolution}");
Console.WriteLine($"Tick time length = {HighResolutionTimer.TickLength} [ms]");
var timer = new HighResolutionTimer(0.5f);
// UseHighPriorityThread = true, sets the execution thread
// to ThreadPriority.Highest. It doesn't provide any precision gain
// in most of the cases and may do things worse for other threads.
// It is suggested to do some studies before leaving it true
timer.UseHighPriorityThread = false;
timer.Elapsed += (s, e) => { /*... e.Delay */ }; // The call back
timer.Start();
timer.Stop(); // by default Stop waits for thread.Join()
// which, if called not from Elapsed subscribers,
// would mean that all Elapsed subscribers
// are finished when the Stop function exits
timer.Stop(joinThread:false) // Use if you don't care and don't want to wait
Вот эталонный тест (и пример в реальном времени):
https://gist.github.com/DraTeots/5f454968ae84122b526651ad2d6ef2a3
Результаты установки таймера на 0,5 мс в Windows 10: 
Также стоит отметить, что:
У меня была такая же точность на моно на Ubuntu.
При игре с эталоном максимальное и очень редкое отклонение, которое я видел, составляло около 0,5 мс (что, вероятно, ничего не значит, это не системы реального времени, но все же стоит упомянуть)
Тики секундомера не являются тиками TimeSpan. На этом компьютере Windows 10 HighResolutionTimer.TickLength равно 0,23 [нс].