2 Approaches:
Sync On
Sync Rate 0
Repeat
Text 100, 100, "Hello World"
FastSync
Until Scancode()
Sync On
Sync Rate 0
Text 100, 100, "Hello World" : FastSync 0
Text 100, 100, "Hello World" : Fastsync 1
Wait Key
You might be curious as to WHY this stops the Flickering...
Simple answer... you don't have a 2D Accelerator in your GPU, so we must *manually* fill both Front and Back Buffers with whatever 2D (Text, Draw, Image) operations we do.
FastSync 0 will run Draw and Present
FastSync 1 will not
It should also be noted you ALWAYS need Sync On to use DBP Emulated Vertical Sync... this is because Native V-Sync no longer exists, so literally does nothing.
Now as a keynote: I'd recommend using Bitmap (Render Buffers) to Draw whatever 2D Operations you need, then convert them to Images to then use as Sprites; basically, how AppGameKit works.
Use the Backbuffer or Pixels Lock., it'll make it usable in real-time.
There are examples of creating a Bitmap Font (lots of said examples in the Snippets Forum, but you'll have to search a little)
Again, a much better and faster approach.
3D doesn't have the same limitations that 2D does as it's handled differently and still supported perfectly fine in DirectX 10/11/12 Feature Level 9.3