コード例 #1
0
ファイル: OnWork.cs プロジェクト: qgb1151521/facecat
 /**
  * 结束工作 退出
  *
  * @param reqInfo
  * @return
  */
 private int quitWork(LogWorkDataInfo reqInfo)
 {
     lock (m_stopDatas) {
         m_stopDatas.Add(reqInfo);
     }
     return(0);
 }
コード例 #2
0
 /**
  * 输出日志
  *
  * @param logType
  * @param message
  */
 public void log(LogType logType, String message)
 {
     lock (m_appenders) {
         foreach (int key in m_appenders.Keys)
         {
             // TODO 有两个时间
             // message = MessageFormat.format("{0} {1} \r\n", GetNowDate("yyyy-MM-dd
             // HH:mm:ss"), message);
             message += "\r\n";
             LogWorkDataInfo dataInfo = new LogWorkDataInfo();
             dataInfo.m_logType    = (int)logType;
             dataInfo.m_logContent = message;
             dataInfo.m_appender   = m_appenders.get(key);
             startWork(dataInfo);
         }
     }
 }
コード例 #3
0
 /**
  * 开始
  *
  * @param dataInfo
  */
 private void startWork(LogWorkDataInfo dataInfo)
 {
     lock (m_messages) {
         m_messages.Add(dataInfo);
     }
 }
コード例 #4
0
ファイル: OnWork.cs プロジェクト: qgb1151521/facecat
        /**
         * 线程实际方法
         */
        public int exc()
        {
            int count = 0;

            lock (m_messages) {
                int messagesSize = m_messages.Count;
                if (messagesSize > 0)
                {
                    for (int i = 0; i < messagesSize;)
                    {
                        LogWorkDataInfo message = m_messages[i];
                        onWorkStart(message);
                        m_dataInfos.get(id).Add(message);
                        m_messages.RemoveAt(i);
                        break;
                    }
                }
            }
            // 执行方法
            List <LogWorkDataInfo> dataInfos = m_dataInfos[id];
            int dataInfosSize = dataInfos.Count;
            // 检测停止
            List <LogWorkDataInfo> stopDatas = new ArrayList <LogWorkDataInfo>();
            int stopDatasSize = stopDatas.Count;

            if (stopDatasSize > 0)
            {
                lock (m_stopDatas) {
                    stopDatasSize = m_stopDatas.Count;
                    for (int i = 0; i < stopDatasSize; i++)
                    {
                        stopDatas.Add(m_stopDatas[i]);
                    }
                }
            }
            for (int i = 0; i < dataInfosSize; i++)
            {
                LogWorkDataInfo pushDataInfo = dataInfos[i];
                pushDataInfo.m_threadID = id;
                int state = 0;
                if (stopDatasSize > 0)
                {
                    for (int j = 0; j < stopDatasSize; j++)
                    {
                        LogWorkDataInfo reqDataInfo = stopDatas[j];
                        if (reqDataInfo.m_id == pushDataInfo.m_id)
                        {
                            lock (m_stopDatas) {
                                int spdSize = m_stopDatas.Count;
                                for (int s = 0; s < spdSize; s++)
                                {
                                    if (m_stopDatas[s].m_id == reqDataInfo.m_id)
                                    {
                                        m_stopDatas.RemoveAt(s);
                                        break;
                                    }
                                }
                            }
                            state = -1;
                        }
                    }
                }
                if (state == 0)
                {
                    state = onWorking(pushDataInfo);
                    count++;
                }
                if (state <= 0)
                {
                    quitWork(pushDataInfo);
                    dataInfos.RemoveAt(i);
                    i--;
                    dataInfosSize--;
                }
            }
            return(count);
        }
コード例 #5
0
ファイル: OnWork.cs プロジェクト: qgb1151521/facecat
 /**
  * 工作中
  *
  * @param dataInfo
  * @return
  */
 private int onWorking(LogWorkDataInfo dataInfo)
 {
     dataInfo.m_appender.log(dataInfo.m_logType, dataInfo.m_logContent);
     return(0);
 }
コード例 #6
0
ファイル: OnWork.cs プロジェクト: qgb1151521/facecat
 /**
  * 开始工作
  *
  * @param dataInfo
  */
 private void onWorkStart(LogWorkDataInfo dataInfo)
 {
 }