1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #include "stdafx.h"
- #include "QueueStrManager.h"
- QueueStrManager::QueueStrManager(void)
- {
- m_pfunc = NULL;
- InitializeCriticalSection(&m_csQueueList);
- }
- QueueStrManager::~QueueStrManager(void)
- {
- DeleteCriticalSection(&m_csQueueList);
- delete[] m_chr;
- m_chr = NULL;
- m_pfunc = NULL;
- }
- void QueueStrManager::AddString(const char * chr)
- {
- EnterCriticalSection(&m_csQueueList);
- int vlen = strlen(chr);
- if(m_couter + 1 > m_max_couter || m_length + vlen > m_max_length){
- if(m_pfunc == NULL){
- LeaveCriticalSection(&m_csQueueList);
- return;
- }
- try
- {
- char* pchr = new char[m_max_length];
- strcpy(pchr, m_chr);
- QueueUserWorkItem(m_pfunc, (LPVOID)pchr, WT_EXECUTEDEFAULT);
- strcpy(m_chr, chr);
- m_couter = 1;
- m_length = strlen(chr);
- }
- catch(...){
- }
- }else {
- if(m_couter == 0){
- strcpy(m_chr, chr);
- }else {
- strcat(m_chr, chr);
- }
- m_couter++;
- m_length += strlen(chr);
- TRACE(_T("sql counts: %d \r\n"),m_couter);
- }
- LeaveCriticalSection(&m_csQueueList);
- }
- void QueueStrManager::Execute()
- {
- EnterCriticalSection(&m_csQueueList);
- if(m_length > 0){
- if(m_pfunc == NULL){
- LeaveCriticalSection(&m_csQueueList);
- return;
- }
- try
- {
- char* pchr = new char[m_length + 2]; // Ô¤Áô½áÊø·û
- strcpy(pchr, m_chr);
- QueueUserWorkItem(m_pfunc, (LPVOID)pchr, WT_EXECUTEDEFAULT);
- }
- catch(...){
- }
- }
- LeaveCriticalSection(&m_csQueueList);
- }
|