C# WPF应用程序是否有一个与$.connection.hub.start().done()等效的Javascript方法?

C# WPF应用程序是否有一个与$.connection.hub.start().done()等效的Javascript方法?,c#,wpf,signalr,C#,Wpf,Signalr,我正在开发一个WPF聊天应用程序,其中有两个项目 WPF服务器 WPF客户端 在发出登录请求时,我希望用户仅在服务器已启动时连接,否则用户将无法登录 我在这个应用程序中使用了signal。如何在登录前检查服务器是否已启动,然后让用户连接到服务器 它可以在JavaScript中通过 $.connection.hub.start().done(function () { }); 如何在wpf应用程序中实现这一点?您可以通过以下代码之类的异常来处理它: try { var hubCon

我正在开发一个WPF聊天应用程序,其中有两个项目

  • WPF服务器
  • WPF客户端
  • 在发出
    登录请求时
    ,我希望用户仅在服务器已启动时连接,否则用户将无法登录

    我在这个应用程序中使用了
    signal
    。如何在登录前检查服务器是否已启动,然后让用户连接到服务器

    它可以在JavaScript中通过

    $.connection.hub.start().done(function () 
    {
    
    }); 
    

    如何在wpf应用程序中实现这一点?

    您可以通过以下代码之类的异常来处理它:

    try
    {
        var hubConnection = new HubConnection(url,...); 
        ... ; /*defining proxies and handlers*/
        hubConnection.Start().Wait();
    } 
    catch(Exception ex)
    { 
       /*handle exception code */
    }
    
    或者:请注意
    hubconnection.Start()
    返回一个
    任务
    ,因此,如果要运行代码并检查它是否成功运行或是否存在异常,可以使用
    ContinueWith
    方法:

     var hubConnection = new HubConnection(url,...); 
     ... ; /*defining proxies and handlers*/
     hubConnection.Start().ContinueWith( t=> {
                                               /* code to run if connection has been made successfully */
                                             },TaskContinuationOptions.OnlyOnRanToCompletion );
    

    因此,我们可以用
    TaskContinuationOptions说这个continuation。只有rantocompletion
    相当于$.connection.hub.start().done()

    @akazemis感谢您的快速响应,但这不是我想要的。实际上,如果客户端连接到服务器,这些方法将被调用。我想知道的是,在允许用户连接之前,我如何确定服务器是否启动。如果您将此代码放入try/catch中,您可以捕获连接错误时的异常,您尝试过吗<代码>尝试{var hubConnection=new hubConnection(url,…);…;hubConnection.Start().Wait();}catch(Exception ex){/*句柄异常代码*/}