private static void StatReset() { try { LockStat.AcquireWriterLock(5000); try { AppVars.Profile.Stat.LastReset = DateTime.Now.Ticks; AppVars.Profile.Stat.LastUpdateDay = DateTime.Now.DayOfYear; AppVars.Profile.Stat.Traffic = 0; AppVars.Profile.Stat.SavedTraffic = 0; AppVars.Profile.Stat.Drop = string.Empty; AppVars.Profile.Stat.ItemDrop.Clear(); AppVars.Profile.Stat.XP = 0; AppVars.Profile.Stat.NV = 0; AppVars.Profile.Stat.FishNV = 0; } finally { LockStat.ReleaseWriterLock(); } } catch (ApplicationException) { } }
internal void UpdateSavedTrafficSafe(int addSavedTraffic) { if (InvokeRequired) { BeginInvoke((MethodInvoker)(() => UpdateSavedTrafficSafe(addSavedTraffic))); return; } try { LockStat.AcquireWriterLock(5000); try { AppVars.Profile.Stat.SavedTraffic += addSavedTraffic; } finally { LockStat.ReleaseWriterLock(); } } catch (ApplicationException) { } menuitemStatItem1.Text = string.Concat("Сэкономлено трафика: ", TraficToString(AppVars.Profile.Stat.SavedTraffic)); UpdateStatString(); }
private static void TimerTick(object sender, System.Timers.ElapsedEventArgs e) { if (!_ready) { return; } _timer.Stop(); try { //Lock the stats list and build queries List <LockInfoItem> copyCache = null; lock (_cache) { copyCache = _cache.ToList(); _cache.Clear(); } using (var context = new DatastoreEntities(ConfigHelper.ConnectionString)) { foreach (var item in copyCache) { var newItem = new LockStat() { CurrentReadCount = item.CurrentReadCount, Elapsed = item.Elapsed, Failure = item.Failure, IsWriteLockHeld = item.IsWriteLockHeld, ThreadId = item.ThreadId, WaitingReadCount = item.WaitingReadCount, WaitingWriteCount = item.WaitingWriteCount, DateStamp = item.DateStamp, TraceInfo = item.TraceInfo, }; context.AddItem(newItem); } context.SaveChanges(); } } catch (Exception ex) { LoggerCQ.LogError(ex); } finally { _timer.Start(); } }