결과를 반환해야하는 API 이벤트가 있다고 가정합니다. 내가해야하는 계산은 컨트롤을 만드는 비동기 메서드를 사용합니다 (UI 스레드에서 실행해야 함).이벤트에 비동기 결과를 반환합니다.
private async void API_QueryControl(object sender, APIEventArgs e)
{
e.Result = await CreateControl();
}
private async Task<Control> CreateControl()
{
await Task.Delay(1000);
return new Panel();
}
이제는 결과를 설정하기 전에 API_QueryControl이 산출하기 때문에 분명히 작동하지 않습니다. API를 제어 할 권한이 없으므로 이벤트를 변경할 수 없습니다. 결과를 기다리는 이벤트를 어떻게 얻을 수 있습니까?
그렇지 않습니다. UI 스레드를 차단하거나 변경하거나 사용하지 마십시오. 값을 계산하는 더 빠른 방법을 찾으십시오. – Servy
UI 스레드를 차단하여 어떻게 작동합니까? CreateControl(). Result, CreateControl(). Wait() 등으로 인해 교착 상태가 발생합니다. – user2533483
이 경우 UI 스레드를 차단하는 한 가지 방법은 비동기를 사용하지 않는 것입니다. ;-) –