/// <summary> /// Occurs when merger gets message to merge flm /// </summary> /// <param name="merMessage">Message from worker</param> /// <returns>True is merging process should be ended</returns> private bool toMergeMessageEvent(MergerMessage merMessage) { try { while (true) { if (m_threadsCount < m_maxThreadsCount) { Thread thread = new Thread(() => updateMessageEvent(merMessage)); thread.Start(); m_log.Info("New thread started. Thread count: " + m_threadsCount.ToString()); break; } else { Thread.Sleep(3000); } } return(false); } catch (Exception ex) { m_log.Error("ToMergeMessage ex: " + ex.Message); ToMergeMessage toMergeMessege = merMessage as ToMergeMessage; MergerUpdateFailedMessage errMes = new MergerUpdateFailedMessage(ex.Message, m_scene.StartMessage.SessionId); m_dispatcherQueues[toMergeMessege.ID].AddMessage(errMes); return(true); } }
private bool mergerUpdateFailedMessageEvent(DispetcherMessage dispMessage) { m_log.Info("MergerUpdateFailedMessage. ID: " + m_threadsID[dispMessage.SessionId].ToString()); MergerUpdateFailedMessage errMessage = dispMessage as MergerUpdateFailedMessage; sendError(m_connectionHandlers[dispMessage.SessionId], errMessage.ErrorMessage); if (m_renderAbortHandlers.ContainsKey(m_threadsID[dispMessage.SessionId])) { m_renderAbortHandlers.Remove(m_threadsID[dispMessage.SessionId]); } m_log.Info("/MergerUpdateFailedMessage"); return(true); }