C# 等待安全关闭自托管信号机

C# 等待安全关闭自托管信号机,c#,signalr,C#,Signalr,我有一个C应用程序,它是自托管Signalr2.0.3 据我所知,在关闭进程前不久,我正在处理OWIN主机组件,这是关闭Signal的唯一方法,如下所示: static void Main(string[] args) { var signalrHost = Microsoft.Owin.Hosting.WebApp.Start(url); //do things signalrHost.Dispose(); Console.WriteLine("Press [Enter] to

我有一个C应用程序,它是自托管Signalr2.0.3

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

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之后,没有客户端在中心上调用任何东西。同样,服务器在调用Dispose之前调用HubContext上的方法

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

我之所以这么说,是因为我的控制台窗口在退出前充满了信号器错误,而连接的客户端没有收到一些最终消息

现在,如果我放入任意线程。在调用Dispose之前睡眠,所有内容都会完全关闭。但这让我猜测要睡多久


有没有办法知道何时可以调用Dispose而不会导致这些错误?

首先为什么要调用Dispose?当客户机需要集线器或完成集线器时,集线器将自动创建和处置。也请看这里我会纠正我的问题,但我不是直接处理集线器,真的只是停止owin网络应用程序,你可以在上面的代码中看到它。。。我在退出应用程序之前就这样做了,所以即使我不直接调用它,它也会自动发生,同样的问题也存在,我需要睡眠不确定的时间来刷新当前活动,我更愿意不丢失它。根据信号员的建议,这不是基础设施关键消息,但我还是希望它在关闭应用程序之前熄灭