处理SignalR .Net客户端中的异常

时间:2014-05-22 10:53:52

标签: c# signalr signalr.client

我有以下客户端方法(.Net客户端):

public void CallServer()
{
    try
    {
        _hubProxy.Invoke("SomeMethod");
    }
    catch
    {
    }
}

我是否正确地说这是异步的,尽管它会立即返回"而不是等待调用完成?如果是这种情况,try..catch是否会在调用期间实际捕获任何异常,例如如果连接已关闭? (如果没有,我该怎么做?)

如果我要添加.Wait(),这是否会使代码同步,所以它只会在调用完成后返回?

最后,在调用中使用await是否有任何优势,或者这在调用具有返回值的服务器方法时是否有用?

1 个答案:

答案 0 :(得分:2)

是的,调用是异步的,因此,当您尝试在实际断开连接时调用方法时,您的代码将不会捕获任何异常(最有可能)(该检查应该同步运行)。 如果您等待调用,那么您的try...catch块会在服务器端方法调用中远程发生错误(但是还有其他事情发生,例如您必须允许详细错误到客户端)。但是,为了捕获更多与通信相关的错误,例如,与连接相关的故障,您应该在连接对象上订阅Error事件,如下所示:

 hubConnection.Error += ex => Console.WriteLine("Error: {0}", ex.Message);

点击此处: http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-net-client#handleerrors