C# async is great. One of the best implementations of cooperative multi threading you can get, IMO.
Greenthreads or what have you are not a replacement if you want to do things like have a UI thread or bind to a native thread for interop. But you _can_ with async/await.