コード例 #1
0
ファイル: Log.cs プロジェクト: qhapaq-49/MyShogi
        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();
            }
        }
コード例 #2
0
ファイル: Log.cs プロジェクト: qhapaq-49/MyShogi
        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);
            }
        }