等到关闭自托管SignalR是安全的

时间:2014-05-02 18:04:48

标签: c# signalr

我有一个C#应用程序,它是自托管SignalR 2.0.3。

在关闭进程之前不久,我正在处理OWIN主机组件(据我所知,关闭SignalR的唯一方法),如下所示:

static void Main(string[] args)
{
  var signalrHost = Microsoft.Owin.Hosting.WebApp.Start(url);
  //do things
  signalrHost.Dispose();
  Console.WriteLine("Press [Enter] to exit ...");
  Console.ReadLine();
}

我知道在调用Dispose后没有客户端在集线器上调用任何内容。同样,服务器在调用HubContext之前调用Dispose上的方法。

然而我假设当我调用Dispose时,内部排队的消息会出错。也就是说,似乎Dispose不等到SignalR的所有内容都被"刷新"。

我这样说是因为我的控制台窗口在退出之前就已经填满了SignalR错误,并且连接的客户端没有收到一些最终消息。

现在,如果我在调用Thread.Sleep之前输入任意Dispose,那么一切都会彻底关闭。但这让我想到要睡多久。

有没有办法知道何时可以在不导致这些错误的情况下致电Dispose

0 个答案:

没有答案