1

意図的に失敗した 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 から来ています。何か案は。ありがとう。

4

1 に答える 1

0

これはasync/await、EventHandler からを入力する方法です

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);
}
于 2017-12-12T16:24:05.370 に答える