public void Write(LogInfoType logType, string log, int pipe_id) { var f_log = LogHelpper.Format(logType, log, pipe_id); lock (lock_object) { sw.WriteLine(f_log); sw.Flush(); } }
public void Write(LogInfoType logType, string log, int pipe_id) { var f_log = LogHelpper.Format(logType, log, pipe_id); List <string> c = null; lock (lock_object) { LogList.Add(f_log); if (ListAdded != null) { c = new List <string>(LogList); // clone } } // イベントハンドラが設定されていればcallbackしたいが、lock解除してからでないとdead lockになる。 // かと言って、LogListはmutableだし…。仕方ないのでClone()しといてそれ渡す。オーバーヘッドすごすぎ…。 // まあ、ロギングしていない時は、オーバーヘッドなしと考えられるので、これはこれでいいや…。 if (ListAdded != null) { ListAdded(c); } }