2017-12-12 9 views
-1

의도적으로 실패한 Task.Run() 작업에서 AggregateException을 잡으려고하는데 AggregateException이 발생하지 않습니다. 왜?AggregateException이 Task.Run()에 던져지지 않음

public void EnterWaitingRoom(string val) 
{ 
    try 
    { 
     Task.Run(() => InvokeHubMethod("HubMethod", 
     new object[] { val })); 
    } 
    catch (AggregateException ex) 
    { 
     // This exception is not caught 
     throw ex; 
    } 
} 

private async Task<object> InvokeHubMethod(string method, object[] args) 
{ 
    return await Task.Run(() => _hubProxy.Invoke<object>(method, 
     args).Result); 
} 

나는 예외가 던져 질 것으로 예상하지만 아니다. 또한 .Wait을 추가하려고 시도했지만 여전히 예외가 발생하지 않습니다. 요청은 Windows UI에서 이루어집니다. 아이디어가 없습니다. 감사.

+1

에서 async/await를 입력하기 때문에 예외가 –

+1

을 던져하지 않습니다 그리고 당신이 AggregateException을 기다리고 언제 어떻게 안쪽 exception => no AggregateException으로 래핑되지 않음 –

+0

Wait()과 여전히 예외가 발생하지 않았다. Task.Run (() => ...)을 시도했다. –

답변

0

이것은 당신이 당신은 EnterWaitingRoom``에서 귀하의 작업에서 대기하지 않는 이벤트 핸들러

public async void Button_Click(object sender, RoutedEventArgs args) 
{ 
    object result = await EnterWaitingRoom("whatever"); 
} 

private Task<object> EnterWaitingRoom(string val) 
{ 
    return InvokeHubMethod(
     "HubMethod", 
     new object[] { val }); 
} 

private Task<object> InvokeHubMethod(string method, object[] args) 
{ 
    return _hubProxy.Invoke<object>(
     method, 
     args); 
}