/// <summary> /// 计算 /// </summary> /// <param name="time"></param> /// <param name="erpv"></param> /// <returns></returns> public SunMoonTime GetOrCreate(Time time, ErpItem erpv) { var key = BuildKey(time); if (!SunMoonTimeStorage.Contains(key)) { lock (locker) { if (!SunMoonTimeStorage.Contains(key)) { SunMoonTime item = new SunMoonTime(); sunmoonPosition.GetPosition(time, erpv); item.SunXyz = sunmoonPosition.rSun; item.MoonXyz = sunmoonPosition.rMoon; item.Gmst = sunmoonPosition.gmst; //return key; SunMoonTimeStorage.Add(key, item); } } } var item2 = SunMoonTimeStorage.Get(key); return(item2); }