public async Task UpdateLifeTotalAsync(int i) { await Task.Run(() => { lock (this) { if (!CanGoNegative && (LifeTotal + i < 0)) { return; } LifeTotal += i; LifeChangedAmmount += i; if (LifeChangedAmmountTimer == null) { LifeChangedAmmountTimer = new System.Threading.Timer(LifeChangedAmmountTimerCallback, null, 3000, -1); } else { LifeChangedAmmountTimer.Change(1000, -1); } //string leftTxt, rightTxt; //LifeTotalToText(out leftTxt, out rightTxt); UpdateLifeTextBox(LifeTotal.ToString()); LifeChanged?.Invoke(this, new LifeChangedEventArgs(i)); LifeChangeHistory?.Invoke(this, new LifeChangedEventArgs(LifeChangedAmmount)); } }); }
private void LifeChangedAmmountTimerCallback(object state) { LifeChangedAmmount = 0; LifeChangeHistory?.Invoke(this, new LifeChangedEventArgs(int.MinValue)); LifeChangedAmmountTimer.Change(-1, -1); }