##1 服务装载器 ServiceLoader 流程
---
#2 流程分析
#CServiceLoaderDlg::OnBnClickedStart()//启动
=> //加载一些初始化数据
=>m_GameService->StartService()//内核组件启动服务
=>CGameService::StartService()//
==>m_TCPSocketCorrespond->SetTCPSocketEvent()//
===>m_QueueServiceEvent.SetQueueServiceSink()//
====>m_pIQueueService.StartService()//
====>CQueueService::StartService()//开始服务,建立完成端口,创建线程
=====>m_QueueServiceThread.StartThread()//
=====>CServiceThread::StartThread()//_beginthreadex
======>CServiceThread::ThreadFunction()//
======>pServiceThread->OnEventThreadRun()//while循环调用函数
------>CQueueServiceThread::OnEventThreadRun()//等待完成端口
------>GetQueuedCompletionStatus()//接收PostQueuedCompletionStatus发送的消息
------->pQueueService->OnQueueServiceThread()//处理消息
------->m_pIQueueServiceSink->OnQueueServiceSink()//
=>m_TCPNetworkEngine->SetTCPNetworkEngineEvent()//内核组件启动服务
==>m_QueueServiceEvent.SetQueueServiceSink()//绑定网络引擎和触发服务器
===>m_pIQueueService.StartService()//
===>CQueueService::StartService()//建立完成端口,创建线程
====>m_QueueServiceThread.StartThread()//_beginthreadex
=====>CServiceThread::ThreadFunction()//线程
======>pServiceThread->OnEventThreadRun()//while循环调用函数
------>CQueueServiceThread::OnEventThreadRun()//等待完成端口
------>GetQueuedCompletionStatus()//
------->pQueueService->OnQueueServiceThread()//
------->m_pIQueueServiceSink->OnQueueServiceSink()//
---
==>m_TimerEngine->StartService() //时间引擎
===>m_TimerThread.StartThread() //启动服务
===>CServiceThread::StartThread()//进入函数,打开监听线程_beginthreadex
====> CServiceThread::ThreadFunction()//线程函数
=====>pServiceThread->OnEventThreadRun()//while循环中的函数
==>m_TCPSocketCorrespond->StartService()//网络引擎
===>CQueueService::StartService()//
====>CreateIoCompletionPort //建立完成端口
====> CServiceThread::StartThread()//启动监听线程_beginthreadex
=====>pServiceThread->OnEventThreadRun()//一个while循环监听函数
==>m_AttemperEngine->StartService()//调度引擎
===>m_QueueService.StartService()//启动队列
===>CQueueService::StartService()//建立完成端口,启动线程
====>m_QueueServiceThread.StartThread()//
====>CServiceThread::StartThread()//_beginthreadex
=====>CServiceThread::ThreadFunction()//
======>pServiceThread->OnEventThreadRun()//while循环调用函数
==>m_DataBaseEngine->StartService()//数据引擎
===>CDataBaseEngine::StartService()//启动服务
====>m_QueueServiceEvent.SetQueueServiceSink()//设置队列
=====>CQueueService::StartService()//建立完成端口,起线程
======>m_QueueServiceThread.StartThread()//
======> CServiceThread::StartThread()//_beginthreadex
=======>pServiceThread->OnEventThreadRun()//while循环调用函数
====>m_pIDataBaseEngineSink->OnDataBaseEngineStart()//启动外挂
=====>CDataBaseSink::OnDataBaseEngineStart()//模块启动
=====>m_AccountsDBModule->SetConnectionInfo()//连数据库
======>CDataBase::SetConnectionInfo()//设置构造连接字符串
=====>m_AccountsDBModule->OpenConnection()//发起连接
======>CDataBase::OpenConnection()//发起连接
=======>m_DBConnection->Open()//_ConnectionPtr m_DBConnection;//数据库对象
==>m_TCPNetworkEngine->StartService()//网络引擎
===>CTCPNetworkEngine::StartService()//
//1.获取cpu线程数
//2.建立完成端口(启动监听线程while循环调用函数)
//3.建立监听SOCKET
//4.启动发送队列 m_SendQueueService.StartService();
//5.建立读写线程,建立应答线程,运行读写线程,网络检测线程,运行应答线程