iam with nevyn, your main problem is the end of your main thread, in your code there is no loop.
or what does output0.Flash(); do ?
The main thread doesn't end, it goes in an infinite loop because output0.Flash() does the same thing as the other threads, either method 1 or method 2 whichever OP is using.
@banalogic: Have you figured out why the main thread does not get an execution cycles? I've noticed that when my main thread goes into a tight infinite loop (tight = no Thread.Sleep(n) in the loop), it doesn't even respond to the Visual Studio debugger. Only option is to erase the program by going into bootloader mode and then reconnect it to the computer.