Task.Run()中没有抛出AggregateException

时间:2017-12-12 15:51:23

标签: c# aggregateexception

我试图从故意失败的Task.Run()操作中捕获AggregateException,但是不会抛出AggregateException。为什么呢?

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 个答案:

答案 0 :(得分:0)

这是您从EventHandler

输入async/await的方法
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);
}