반응형
아래 C# WPF 소스 코드를 실행시키면 deadlock에 걸려서 GUI 창이 안 뜬다.
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private async Task<bool> Invert(bool x)
{
await Task.Delay(1);
return !x;
}
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
bool x = Invert(true).Result;
}
}
다음과 같이 Task.Run()으로 호출할 함수를 감싸주면 deadlock에 걸리지 않는다.
bool x = Task.Run(()=>Invert(true)).Result;
Reference
반응형
'C#' 카테고리의 다른 글
C#과 Python: yield return과 yield 비교 (0) | 2024.12.26 |
---|---|
Choosing Between Class and Struct (0) | 2024.12.24 |
explicit interface implementation (0) | 2024.12.24 |
.Reverse() 함수를 쓸 때 주의 점 (0) | 2024.12.22 |
public 대신 internal을 사용할 수 있다면 internal을 쓰자. (0) | 2024.12.21 |