It sounds like you’re doing some kind of “animation”? If milliseconds is good enough, then a simple Timer object should work. Simply keep an array of time deltas. When the timer fires, do your stuff, then set the next fire time to the next value in your array sequence.
This doesn’t use an external clock source but of course the internal clock.
You can also use the hardware real time clock’s alarm function. It might be able to support shorter intervals.
What will make a big difference here is what happens between the clock “ticks”. If you have a lot of processing to do, it may overrun the next checkpoint. So, I don’t think the problem is about how quick NETMF can respond to an external stimulus but instead how quick your program can get through its functions.