Не надо никакого воркера, я бы взял обычный TextWriter, подсунул ему FileStream от stdout и через него писал. Ну разумеется, если кто-то параллельно будет вызывать Console.Write, то будет каша
Это оболочка над байтовым потоком, которая принимает строки и перекодирует их в нужные байты. У неё есть WriteAsync, который и делает асинхронную запись