public static void ProcessMessages() { DataSet dsMessages; byte[] bFreeFormMsg = { }; while (_bRunThread) { if (_prcoessEvent.Wait(_waitTime)) { Thread.Sleep(10); //LogManager.WriteLog("manual reset event.", LogManager.enumLogLevel.Info); continue; } LogManager.WriteLog("Inside the thread.", LogManager.enumLogLevel.Info); while (true) { int iRecordsToProcess = 0; dsMessages = objResponseBusiness.GetDataForSendToComms(ref iRecordsToProcess); if ((dsMessages == null || dsMessages.Tables.Count <= 0 || dsMessages.Tables[0].Rows.Count <= 0)) { if (iRecordsToProcess > 0) { LogManager.WriteLog("No records matches, but stil records are pending to process: " + iRecordsToProcess.ToString(), LogManager.enumLogLevel.Info); Thread.Sleep(100); continue; } } else { foreach (DataRow row in dsMessages.Tables[0].Rows) { string strResponseMessage = Convert.ToString(row["PC_ST_ActualMessage"]); int iInstallationNo = Convert.ToInt32(row["Installation_No"]); Thread.Sleep(10); switch (strResponseMessage.Substring(2, 2)) { case "06": bFreeFormMsg = objResponseBusiness.GetCardInFreeFormMessage(strResponseMessage); if (SendFreeFormMsgToComms(bFreeFormMsg, iInstallationNo)) { objResponseBusiness.UpdateSentFreeFormMsgToCommsStatus(Convert.ToInt32(row["PC_ST_ID"]), true); LogManager.WriteLog("Sent Card in Response PC06 data to Ex Comms Successfully for the Installation : " + iInstallationNo.ToString(), LogManager.enumLogLevel.Info); _prcoessEvent.Set(); } break; case "03": bFreeFormMsg = objResponseBusiness.GetApproachLimitFreeFormMessage(strResponseMessage); if (SendFreeFormMsgToComms(bFreeFormMsg, iInstallationNo)) { objResponseBusiness.UpdateSentFreeFormMsgToCommsStatus(Convert.ToInt32(row["PC_ST_ID"]), true); LogManager.WriteLog("Sent Approach Limit PC03 data to Ex Comms Successfully for the Installation : " + iInstallationNo.ToString(), LogManager.enumLogLevel.Info); _prcoessEvent.Set(); } break; case "04": bFreeFormMsg = objResponseBusiness.GetLimitReachedFreeFormMessage(strResponseMessage); if (SendFreeFormMsgToComms(bFreeFormMsg, iInstallationNo)) { objResponseBusiness.UpdateSentFreeFormMsgToCommsStatus(Convert.ToInt32(row["PC_ST_ID"]), true); LogManager.WriteLog("Sent Limit PC04 data to Ex Comms Successfully for the Installation : " + iInstallationNo.ToString(), LogManager.enumLogLevel.Info); _prcoessEvent.Set(); } break; case "07": bFreeFormMsg = objResponseBusiness.GetRelaxedLimitFreeFormMessage(strResponseMessage); if (SendFreeFormMsgToComms(bFreeFormMsg, iInstallationNo)) { objResponseBusiness.UpdateSentFreeFormMsgToCommsStatus(Convert.ToInt32(row["PC_ST_ID"]), true); LogManager.WriteLog("Sent Limit PC07 data to Ex Comms Successfully for the Installation : " + iInstallationNo.ToString(), LogManager.enumLogLevel.Info); _prcoessEvent.Set(); } break; } } if (iRecordsToProcess > iMaxRows) { LogManager.WriteLog("Records to process is greater than Max rows:" + iRecordsToProcess.ToString(), LogManager.enumLogLevel.Info); Thread.Sleep(100); continue; } } break; } Thread.Sleep(10000); } }