示例#1
0
        private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!MessageBoxEx.Confirm("确认关闭中心服务器吗(如果关闭,将提示用户关闭投注程序)?"))
            {
                e.Cancel = true;
                return;
            }

            // 广播中心服务器关闭命令
            Log(Environment.NewLine + "关闭中心服务器,等待其它端自动关闭!");
            MQPublishQueue.CloseCenterServer();

            // 等待各个服务端都退出
            int tryCount = 20;

            while (tryCount > 0)
            {
                if (SessionPool.HasUnConnectedServers())
                {
                    Thread.Sleep(500);
                }
                else
                {
                    break;
                }
                tryCount--;
            }

            // 检查是否有未退出的服务端(除开客户使用的端)
            if (SessionPool.HasUnConnectedServers())
            {
                MessageBoxEx.Confirm("还存在未关闭的其它控制端软件,请手工退出所有后台采集程序?");
            }

            _cancellationTokenSource.Cancel();
            Thread.Sleep(500);
        }