Is there a name for a family of bugs, that are caused by assumption, that user would generate only 1 event during the execution of the handler ?Simplest example is: animation triggered by click, which can run several copies of itself, if user rapidly clicks several times.
Is there a name for More events than expected bug?
bug;anti patterns
What you have described is an excellent example of a...Race ConditionA race condition (applicable to both electronics and with programming) is when the output and/or result of the process is unexpectedly and critically dependent on the sequence or timing of other events.You have also described an issue with...ReentrancyIn general, methods that may safely directly or indirectly call themselves are re-entrant.  If your event handlers are inadvertently raising other events that you cannot safely handle, you can say that you have non-reentrant code.In C#, here is an example of code that exhibits a race condition:private void button1_Click(object sender, EventArgs e){    if (timer1.Enabled)        throw new InvalidOperationException(We're already ticking, you really should wait!);    timer1.Interval = 5000;    timer1.Start();}private void timer1_Tick(object sender, EventArgs e){    MessageBox.Show(Okie Dokie);    timer1.Stop();}Here is a simple example of code that exhibits a problem with reentrancy:private void dataGridView1_CurrentCellChanged(object sender, EventArgs e){    //move to the next cell if we are in the first cell    if (dataGridView1.CurrentCell != null &&        dataGridView1.CurrentCell.RowIndex == 0 &&        dataGridView1.CurrentCell.ColumnIndex == 0)    {        //this throws an InvalidOperationException because the Microsoft DataGridView        //does not handle Re-entrant calls to SetCurrentCellAddressCore        dataGridView1.CurrentCell = dataGridView1[1, 0];    }}There are a number of ways to solve these types of problems.  Two ways are through mutual exclusion ( such as with locking) or by avoiding the race condition or re-entrancy altogether.Simple solution to example #1 using mutual exclusion:private void button1_Click(object sender, EventArgs e){    if (timer1.Enabled)        return; //just silently ignore, maybe throw up a message box    timer1.Interval = 5000;    timer1.Start();}private void timer1_Tick(object sender, EventArgs e){    MessageBox.Show(Okie Dokie);    timer1.Stop();}Nitpicker's corner: locking is not necessary in this case because all code is running on the UI thread.Here's a solution to example #2 that avoids the issue altogether:private void button1_Click(object sender, EventArgs e){    Timer newTimer = new Timer() { Interval = 5000 };    newTimer.Tick += new EventHandler(newTimer_Tick);    newTimer.Start();}void newTimer_Tick(object sender, EventArgs e){    MessageBox.Show(Okie Dokie);    ((Timer)sender).Dispose();  //probably not great to dispose in the middle of an eventhandler, but you get the idea...}Here's a solution to example #3 that avoids the re-entrancy issue:private void dataGridView1_CurrentCellChanged(object sender, EventArgs e){    //move to the next cell if we are in the first cell    if (dataGridView1.CurrentCell != null &&        dataGridView1.CurrentCell.RowIndex == 0 &&        dataGridView1.CurrentCell.ColumnIndex == 0)    {        //this does not throw an exception because         //the CurrentCell will be set some time later        dataGridView1.BeginInvoke(new MethodInvoker(() =>            {                dataGridView1.CurrentCell = dataGridView1[1, 0];            }));    }}