static void OnEveryLogWrite(object sender, CtkLoggerEventArgs ea) { if (EhEveryLogWrite == null) { return; } EhEveryLogWrite(sender, ea); }
void OnLogWrite(CtkLoggerEventArgs ea) { if (this.EhLogWrite == null) { return; } this.EhLogWrite(this, ea); }
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); } }
public virtual void Write(CtkLoggerEventArgs ea, CtkLoggerEnumLevel _level) { ea.Level = _level; this.WriteAsyn(ea); }
/// <summary> /// 預設寫Log是用非同步 /// </summary> /// <param name="ea"></param> public virtual void Write(CtkLoggerEventArgs ea) { this.WriteAsyn(ea); }
protected virtual void WriteSyn(CtkLoggerEventArgs ea) { this.OnLogWrite(ea); OnEveryLogWrite(this, ea); }