We once made some measurements with writing to the GPIO registers directly as well but from native code. There we got much higher frequencies. Toggling a GPIO was bellow 1 us.
Write some native code, where you start the toggling in a thread. If this helps, you can later use PInvoke To start and stop the thread from .NET. Also try to disable DFS and increase the priority of the thread using CeSetThreadPriority.
If you need a more accurate signal with less Jitter, you may should consider using the PWM. You find more details in the PWM Lib API.