• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ptsopors2009

Formulario Espera

2 mensagens neste tópico

Bom Dia ,

  Antes de mais felicito os autores deste site é um excelente projecto na lingua de camões.

  Venho pedir ajuda em relação a um formulário de espera, estou a criar um formulario que pesquisa as intancias e bases de dados SQL existentes, o problema surge quando crio um outro formulario com uma progressbar que é exectuda paralelamente enquanto os dados são carregadoso a questão é que continua a surgir a mensagem "não responde" passado alguns segundos lá termina o processo.

  A ideia é ter um formulário de espera enquanto os dados da pesquisa do servidor é carregado.

  Em baixo coloco o código que estou a usar:

  private void FormAbrirBaseDadosSql_Load(object sender, EventArgs e)

        {

         

          Thread tempo_espera = new Thread(Tarefa_Espera);

            tempo_espera.IsBackground = true;

            tempo_espera.Start();

            DateTime inicio = DateTime.Now;

            //Tarefa_Espera();

            int n = 0;

            DataTable L = new DataTable();

            L = Instancia.Lista_Instancias();

            foreach (DataRow linha in L.Rows)

            {

                listaSqlServerInstancias.Items.Add(linha["ServerName"] + "\\" + linha["InstanceName"]);

                //listaSqlServerInstancias.Items.Add(linha["ServerName"] + " - " + linha["InstanceName"] + " - " + linha["Version"]);

                listaSqlServerInstancias.SelectedIndex = n;

                instancia_sql = listaSqlServerInstancias.Text;

                DataTable ListaBaseDados = new DataTable();

                ListaBaseDados = Instancia.Lista_Base_dados(instancia_sql);

                if (n == 0)

                {

                    foreach (DataRow linha2 in ListaBaseDados.Rows)

                    {

                        lista_base_dados.Items.Add(linha2["Database_Name"]);

                    }

                }

                n = +1;

        }

            cronometro.Text = Convert.ToString(DateTime.Now.Subtract(inicio));

    }

 

    private void Tarefa_Espera()

        {

            FormEspera f = new FormEspera();

            f.Show();

            f.Refresh();

            int i, num;

            num = 100;

            for (i = 0; i < num; i++)

            {

                  Thread.Sleep(50);

                  f.progressBar1.Maximum = num;

                  f.progressBar1.Value += 1;

            }

 

            f.Hide();

            f.Dispose();

        }

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei porque te dá esse erro, mas aproveito pra corrigir outro.

              if (n == 0)
                {
                    foreach (DataRow linha2 in ListaBaseDados.Rows)
                    {
                        lista_base_dados.Items.Add(linha2["Database_Name"]);
                    }
                }
                n = +1;

é n += 1; isto se queres incrementar, se queres dar o valor 1 à variavel n, como tens também dá. Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora