Esempio n. 1
0
 static void OnEveryLogWrite(object sender, CtkLoggerEventArgs ea)
 {
     if (EhEveryLogWrite == null)
     {
         return;
     }
     EhEveryLogWrite(sender, ea);
 }
Esempio n. 2
0
 void OnLogWrite(CtkLoggerEventArgs ea)
 {
     if (this.EhLogWrite == null)
     {
         return;
     }
     this.EhLogWrite(this, ea);
 }
Esempio n. 3
0
        protected virtual void WriteAsyn(CtkLoggerEventArgs ea)
        {
            this.queue.Enqueue(ea);
            if (!Monitor.TryEnter(this, 1000))
            {
                return;
            }
            try
            {
                if (this.task != null)
                {
                    //若還沒結束執行, 先return
                    if (!this.task.IsEnd())
                    {
                        return;
                    }
                    //若之前有, 把它清乾淨
                    using (var obj = this.task)
                        if (!obj.IsEnd())
                        {
                            obj.Cancel();
                        }
                }


                this.task = CtkTask.RunLoop(() =>
                {
                    CtkLoggerEventArgs myea;
                    lock (this)
                    {
                        if (!this.queue.TryDequeue(out myea))
                        {
                            return(true);                                 //取不出來就下次再取
                        }
                    }
                    this.WriteSyn(myea);

                    //若Count等於零, 這個task會結束, IsEnd() = true
                    return(this.queue.Count > 0);
                });
            }
            finally { Monitor.Exit(this); }
        }
Esempio n. 4
0
 public virtual void Write(CtkLoggerEventArgs ea, CtkLoggerEnumLevel _level)
 {
     ea.Level = _level;
     this.WriteAsyn(ea);
 }
Esempio n. 5
0
 /// <summary>
 /// 預設寫Log是用非同步
 /// </summary>
 /// <param name="ea"></param>
 public virtual void Write(CtkLoggerEventArgs ea)
 {
     this.WriteAsyn(ea);
 }
Esempio n. 6
0
 protected virtual void WriteSyn(CtkLoggerEventArgs ea)
 {
     this.OnLogWrite(ea);
     OnEveryLogWrite(this, ea);
 }