/// <summary>
    /// [AI thread] Retrieves the last parameters sent  to the AI thread.
    /// </summary>
    /// <returns></returns>
    public static AI_Params Get()
    {
        AI_Params p;

        ThreadSignal.WaitOne(); // Waiting for a Send() call
        lock (ThreadQueue) { p = ThreadQueue.Dequeue(); }
        if (ThreadQueue.Count == 0)
        {
            ThreadSignal.Reset(); // Going to sleep if nothing else in the queue
        }
        return(p);
    }
Ejemplo n.º 2
0
 private static void LogWorker()
 {
     while (true)
     {
         ThreadSignal.WaitOne();
         List <KeyValuePair <Logger, LogEntry> > logEntriesQueue = null;
         lock (LogQueue)
         {
             logEntriesQueue = new List <KeyValuePair <Logger, LogEntry> >(LogQueue); //LogQueue.ToList();
             LogQueue.Clear();
         }
         foreach (KeyValuePair <Logger, LogEntry> kv in logEntriesQueue)
         {
             try
             {
                 kv.Key.Log(kv.Value);
             }
             catch (Exception ex)
             {
                 OnLogError(kv.Key, "Asynchronous Logger error.", ex);
             }
         }
     }
 }