TimeSpan.FromSeconds takes a double, and can represent values down to 100 nanoseconds, however this method inexplicably rounds the time to whole milliseconds.>
TimeSpan.FromSeconds
I think the explanation is there: TimeSpan structure incorrectly handles values close to min and max value
And it looks like it's not going to change any time soon :-)