void StopServer() { if (!beRunning || completionPort == NULL) { return; } beRunning = false; //清理完成端口 PostQueuedCompletionStatus(completionPort, 0xFFFFFFFF, 0, 0); CloseHandle(completionPort); completionPort = NULL; citylamp.ClearLampID2LampMutexSockMap(); closemysocket(server_sock); { MutexGuard guard(PCClientListMutex); list<PCClient*>::iterator lt_it = PCClientList.begin(); while (lt_it != PCClientList.end()) { closemysocket((*lt_it)->GetDataSocket()); ++lt_it; } } //等待pcclientthread线程全部终止 while (PCClientList.size() > 0 || citylamp.GetLampIDCount() > 0) { Sleep(200); } dlgMain.PostMessageW(WM_UPDATELAMPLIST_MESSAGE, 2, 0); dlgMain.PostMessageW(WM_UPDATEPCLIST_MESSAGE, 2, 0); }
void UpdateServerStatus() { if (beRunning) { dlgMain.PostMessageW(WM_SERVERSTATUS_MESSAGE, 1, 0); } else { dlgMain.PostMessageW(WM_SERVERSTATUS_MESSAGE, 0, 0); } }
void UpdateLampListView(bool operation, u_short lampid) { if (operation) //增加lamp { dlgMain.PostMessageW(WM_UPDATELAMPLIST_MESSAGE, 1, (LPARAM)lampid); } else //删除lamp { citylamp.SendOfflineCmdToPCClient(lampid); dlgMain.PostMessageW(WM_UPDATELAMPLIST_MESSAGE, 0, (LPARAM)lampid); //PostMessageW((HWND)dlgMain, WM_UPDATELAMPLIST_MESSAGE, 0, (LPARAM)lampid); } }
void UpdatePCListView() { dlgMain.PostMessageW(WM_UPDATEPCLIST_MESSAGE, 0, 0); }