예제 #1
0
파일: LogManager.cs 프로젝트: lscyane/KCBr
        /// <summary>
        /// 資源推移情報の追加
        /// </summary>
        /// <param name="info">資源情報</param>
        public bool AddMaterialsChangeResult(LogData.MaterialChangeInfo info)
        {
            if (info == null)
            {
                Debug.WriteLine("invalid MaterialChange(null)");
                return false;
            }

            DateTime now = DTNow;

            if (_bLoadingMaterialInfo)
            {
                Debug.WriteLine("MaterialChange still loading...");
                return false;
            }

            Debug.WriteLine(string.Format("LastMod:{0} Now:{1}",
                _dtLastMaterialUploaded, now));

            if (_dtLastMaterialUploaded == DateTime.MinValue
                || (_dtLastMaterialUploaded < now))
            {
                Debug.WriteLine("Update MaterialsInfo");
                info.Date = now;

                lock (((ICollection)_materialsLog).SyncRoot)
                {
                    //リストが空の時例外を投げるらしい。
                    if (_materialsLog.Count > 0)
                        info.PrevItem = _materialsLog.Last();

                    _materialsLog.Add(info);
                }
                _addMaterialRow(info.SetRowData(_createMaterialNewRow()));

                UpdateMaterialChart();

                _vlvMaterialChange.UpdateList();
                _dtLastMaterialUploaded = now;
                _logStore.AddMaterialChange(info, (bool bSucceeded) =>
                {
                    if (!(Properties.Settings.Default.SuppressSuceedWriteLog && bSucceeded))
                        UpdateStatusMessage("資源推移の書き込みに{0}しました", bSucceeded ? "成功" : "失敗");
                });
                return true;
            }
            return false;
        }