ciao a tutti sto scrivendo un programma che deve leggere dei dati su una porta e il programma sostanzialmente funziona xkè tramite il metodo Print di System.diagnostic.debug ho constatato che i dati li riceve correttamente. Il mio problema è che questo codice è inserito in un timer che viene eseguito ogni 10 millisecondi e al suo interno c'è l'istruzione application.DoEvents() per non fare bloccare l'applicazione, ma dopo un pò che il programma è in esecuzione e funziona correttamente mi esce il segunte errore :" Eccezione non gestita di tipo 'System.StackOverflowException' in System.Windows.Forms.dll" e l'esecuzione mi si blocca per l'appunto sull'istruzione application.doEvents().

vi posto il codice
codice:
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            Application.DoEvents();  <== l'errore è qui

            string command = leggiFlusso.ReadLine();

            if (command.Equals("WALK"))
            {
                foreach (tassello tas in snake)
                    tas.Location = tas.newPoint;
            }
            else
            {
                System.Diagnostics.Debug.Print(command);
                switch (cont)
                {
                    case 0:
                        p = new Point();
                        p.X = int.Parse(command);
                        cont++;
                        break;

                    case 1:
                        p.Y = int.Parse(command);
                        cont++;
                        break;

                    case 2:
                        if (int.Parse(command) <= snake.Count - 1)
                        {
                            snake[int.Parse(command)].newPoint = p;
                            //System.Diagnostics.Debug.Print("creo il tassello");
                            //System.Diagnostics.Debug.Print(command);
                        }
                        else
                        {
                            if (snake.Count <= 2)
                                this.creaTassello(p, snake.Count);
                            else
                            {
                                this.creaTassello(p, 2);
                                snake[snake.Count - 2].Image = img[1];
                            }
                        }

                        cont = 0;
                        break;
                }
            }
        }
ma perchè mi da questo errore ?

grazie ciao luca