I did a quick look through the datasheet and nothing immediately stood out as problematic from a NETMF perspective, though of course actual implementation may prove otherwise.
NETMF and the G400D do support SPI mode 0, though you configure it by specifying the polarity and edges on the configuration object directly, instead of specifying a mode.
Since this is a CAN module, depending on your exact timing and traffic requirements, managed code may not be able to keep up. If you do find that to be the case, RLP in NETMF unfortunately doesn’t have any SPI wrappers so you’ll have to talk to the processor registers yourself, which is pretty advanced (TinyCLR on the other hand, does provide SPI wrappers in native code). Of course, you can configure SPI in managed then do the writing and reading only in native. I’d still try to implement in managed first and only move to native as a last resort.
To at least answer your original questions in a general sense:
In managed code relying on timing in the millisecond and nanosecond range is not possible, the system is not deterministic in that case. In native code, our RLP helper does provide a delay function that take microseconds, though that’s it. Anything else will require to use a free timer (make sure you don’t use one that the firmware itself uses) to keep track on your own as you suspected.
In managed code, you can’t block interrupts or assume exclusive control. You could be preempted at any time. Even if you have a single thread, the system may need to take some time for tasks internally that pause your thread briefly. In native code you can indeed disable interrupts which gives you exclusive control, but be careful not to do that for too long because the rest of the system is unresponsive in the meantime and things like network sockets will eventually timeout.
endTransaction, you’re on the right track. Assuming a single SPI device, once you create it and configure it once at the beginning, it’s good to go. You just need to call Write/Read from here on out. There aren’t any begin or end functions.