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);
}