SynchronizationContext.Current가 null 일 때 Task.Wait() 및 Task.Result를 호출하는 것이 100 % 안전하지 않은 이유는 무엇입니까?SynchronizationContext.Current가 null 인 경우 Task.Wait를 안전하게 사용할 수 있습니까?
필자는 멀티 스레드이지만 동기식 서비스를 제공합니다. 동기 메서드 중 하나를 HttpClient.PostAsXmlAsync에 대한 호출로 대체하려고합니다. 구현은 전체 프로젝트 변경을 피하기 위해 .Result를 사용하여 동기 메소드로 변환합니다. 그러나 잘 설명되어있는 일반적인 교착 상태 문제가 발생합니다.
동기화 컨텍스트가없는 경우 교착 상태가 발생할 수 있음을 이해하지 못합니다.
어쩌면 적어도 일부 코드를 게시 할 수 있습니다. 서비스로 당신은 Windows 서비스를 의미합니까? – Evk
@Evk - 그는 아마도 웹 서비스를 의미합니다. – Zegar
비동기 메소드를 처음 사용하는 이유는 무엇입니까? 동기 연산을 수행하려면 처음부터 본질적으로 동기식 메소드 만 사용하십시오. 어쨌든 그냥 기다려야하는 경우 비동기 메소드 몇 개를 만드는 목적은 없습니다. 둘 중 하나를 사용하거나 서비스 핸들러를 비동기로 만들면됩니다. – Servy