c# - WPF 应用程序是否有等效于 $.connection.hub.start().done() Javascript 方法?

标签 c# wpf signalr

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

  1. WPF 服务器
  2. WPF 客户端

在发出登录请求时,我希望用户只有在服务器已经启动时才能连接,否则用户将无法登录。

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

它可以用 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() 返回一个 Task 所以如果你想运行一个代码并检查它是否运行成功或者有异常,你可以使用 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.OnlyOnRanToCompletion 的 ContinueWith 等同于 $.connection.hub.start().done()

关于c# - WPF 应用程序是否有等效于 $.connection.hub.start().done() Javascript 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38137142/

相关文章:

wpf - 捕获在 Powershell 中运行的 XAML 文本框中的 Enter 键

c# - 如何决定每个用户状态的存储位置?注册表?应用程序数据?隔离存储?

signalr - 如何在 hubpipleline 之外使用 SignalR hub 实例

c# - SignalR 客户端未定义

c# - 从 MVC Controller 添加 SignalR Hub 组

javascript - 如何自动正确加载 A 页面或 A div?

c# - 使用 .Net XmlSerializer,有没有办法省略根级标记?

c# - 如何使用 DateTime 字段检索上一条和下一条记录?

c# - 在WPF应用程序的mvvm中实现导航的最佳方法

c# - 使用 Async CTP 在单个函数中异步 HTTP 发布数据