/// <summary> /// generate events asyncronously with random delay /// </summary> public void Working() { int n = rnd.Next(5, 10); //adding more randomness StartWork?.Invoke(textBox); Thread.Sleep(rnd.Next(30 - n, 40 + n) * 100); int m = rnd.Next(20, 50); while (!IsClicked) { switch (rnd.Next(1, 5)) { case 1: { FirstEvent?.Invoke(textBox); break; } case 2: { SecondEvent?.Invoke(textBox); break; } case 3: { ThirdEvent?.Invoke(textBox); break; } case 4: { FourthEvent?.Invoke(textBox); break; } default: break; } Thread.Sleep(rnd.Next(100 - n, 100 + m) * 100); } //StopWork?.Invoke(textBox); StopCalled = true; }
private void OnThird(ThirdEvent obj) { CurrentState = 3; }