>>15
非同期の方がいいよ。
.NET Framework の内部でいい具合に I/O 待ちスレッド制御してくれてるから。

ただ、書くのが楽なのは、現状、自前スレッドで同期処理。
まあ、それも、C# 5.0 で Task 非同期が入れば解消される問題。