ciao,
come da titolo ho un problema riguardante la seguentre funzione che va in "blocco" causa overflow... qlk idea?
codice:
    void ricorsiva(string userP, string userA)
    {
        DataSet DSetR = new DataSet();
        DataSet DSetR2 = new DataSet();
        string Cnnstr = System.Configuration.ConfigurationSettings.AppSettings["CN1"].ToString();
        bool ret2 = false;
        ret2 = clsFunctions.LoadDataSetFromSqlStatement(Cnnstr, "SELECT kiave1 FROM amicizie WHERE (amicizie.kiave2 = '" + userP + "')", "PROVA2", ref DSetR, true);

        if (ret2 == true)
        {
            if (DSetR.Tables["PROVA2"].Rows.Count > 0)
            {
                DSetR.Tables["PROVA2"].Rows[0]["kiave1"].ToString();
                int num;
                num = DSetR.Tables["PROVA2"].Rows.Count;
                int i;
                bool risultato;
                risultato = false;
                string a;
             
                for (i = 0; i < num; i++)
                {
                    a = DSetR.Tables["PROVA2"].Rows[i]["kiave1"].ToString();
                    if (a == userA)
                    {
                        risultato = true;
                        break;
                    }
                    else
                    {
                        risultato = false;
                    }

                    if (risultato == true)
                    {
                        nessuna.Text = "percorso tra gli urenti selezionati trovato";
                    }
                    else
                    {
                        this.ricorsiva(a, userA);
                    }
                }
            }
            else
            {
                bool ret3 = false;
                ret3 = clsFunctions.LoadDataSetFromSqlStatement(Cnnstr, "SELECT kiave2 FROM amicizie WHERE (amicizie.kiave1 = '" + userP + "')", "PROVA3", ref DSetR2, true);
                if (ret3 == true)
                {
                    if (DSetR2.Tables["PROVA3"].Rows.Count > 0)
                    {
                        int num2;
                        num2 = DSetR2.Tables["PROVA3"].Rows.Count;
                        int i;
                        bool risultato2;
                        risultato2 = false;
                        string b;
                        DSetR2.Tables["PROVA3"].Rows[0]["kiave2"].ToString();
                        num2 = DSetR2.Tables["PROVA3"].Rows.Count;
                        for (i = 0; i < num2; i++)
                        {
                            b = DSetR2.Tables["PROVA3"].Rows[i]["kiave2"].ToString();
                            if (b == userA)
                            {
                                risultato2 = true;
                                break;
                            }
                            else
                            {
                                risultato2 = false;
                            }

                            if (risultato2 == true)
                            {
                                nessuna.Text = "percorso tra gli urenti selezionati trovato";
                            }
                            else
                            {
                                this.ricorsiva(b, userA);
                            }
                        }
                    }
                    else
                        {
                            nessuna.Text = "L'utente " + userP + " non ha ancora aggiunto nessun utente alla lista degli amici";
                        }
                }
            }

        }
    }