例えば、Sleepじゃなくて(同期)Waitだけど、WPFなどGUIのプロジェクトでこんなコードを走らせてみれば、デッドロックするよw
// MainWindow.xaml.cs
...
public partial class MainWindow : Window {
private async Task DelayAsync() {
await Task.Delay(1000);
}
public MainWindow() {
DelayAsync().Wait();
InitializeComponent();
}
}
...
.NETのモデルは同期と非同期を混ぜると結構簡単に(分かりにくい)デッドロックを起こす