Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

iMatch

c# - Progresso de uma operação

Recommended Posts

Olá,

 

Desejaria saber como faço pra saber o progresso de uma operação em c# com Windows Forms, e progressbar.

 

Mas me expliquem detalhadamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo...

 

este fórum é apenas ASP Classic. Porfavor poste no fórum de .Net

 

Mas aqui vai um exemplo

 

using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
   public partial class Form1 : Form
   {
public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, System.EventArgs e)
{
    // inicia a BackgroundWorker.
    backgroundWorker1.RunWorkerAsync();
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    for (int i = 1; i <= 100; i++)
    {
	// 100 milesegundos
	Thread.Sleep(100);
	// Report progress.
	backgroundWorker1.ReportProgress(i);
    }
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{

    progressBar1.Value = e.ProgressPercentage;
    // Set the text.
    this.Text = e.ProgressPercentage.ToString();
}
   }
}

 

O controle ProgessBar indica visualmente o progresso de uma operação com o passar de um intervalo de tempo. Você pode usá-lo em operações de cópia de arquivos , conexão com a internet , acesso a banco de dados , operações com registros de tabelas , etc.

 

A classe ProgressBar possui quatro propriedades que são comumente usadas e que não são herdadas do controle ou outra classe base.

 

Untitled-61.png

 

Além destas propriedades o controle possui dois métodos que são geralmente usados:

 

Increment - método que tem como argumento um inteiro pelo qual incrementa a barra de progresso.

PerformStep - método sem argumentos que incrementa a barra de progresso pelo valor definido pela propriedade Step.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo...

 

este fórum é apenas ASP Classic. Porfavor poste no fórum de .Net

 

Mas aqui vai um exemplo

 

using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
   public partial class Form1 : Form
   {
public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, System.EventArgs e)
{
    // inicia a BackgroundWorker.
    backgroundWorker1.RunWorkerAsync();
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    for (int i = 1; i <= 100; i++)
    {
	// 100 milesegundos
	Thread.Sleep(100);
	// Report progress.
	backgroundWorker1.ReportProgress(i);
    }
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{

    progressBar1.Value = e.ProgressPercentage;
    // Set the text.
    this.Text = e.ProgressPercentage.ToString();
}
   }
}

 

O controle ProgessBar indica visualmente o progresso de uma operação com o passar de um intervalo de tempo. Você pode usá-lo em operações de cópia de arquivos , conexão com a internet , acesso a banco de dados , operações com registros de tabelas , etc.

 

A classe ProgressBar possui quatro propriedades que são comumente usadas e que não são herdadas do controle ou outra classe base.

 

Untitled-61.png

 

Além destas propriedades o controle possui dois métodos que são geralmente usados:

 

Increment - método que tem como argumento um inteiro pelo qual incrementa a barra de progresso.

PerformStep - método sem argumentos que incrementa a barra de progresso pelo valor definido pela propriedade Step.

Olá,

 

Perdão por postar em local incorreto.

 

Bom...Exemplo eu quero me conectar com a DB de um usuário, mas quero informar a o progresso numa barra de progresso, como eu poderia executar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Então como faço pra descobrir o valor de uma operação, sei que tem que usar BackgroundWorker, mas como faço pra descobrir o progresso da operação com ele? Caso não seja BackgroundWorker por favor me digam, qual método eu posso usar, e me expliquem por favor :)

 

Grato,

iMatch

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, é o seguinte, o bgworker ele vai dar um progresso automático que você retornar, ou seja, se você quer que ele retorne um valor de porcentagem você precisa ter seus métodos sendo realizados e no meio deles um "ReportProgress" com um valor, assim você define a porcentagem de progresso do BGW.

 

O mesmo vale para fora dele, ou seja, o que estou falando aqui é que VOCÊ define o progresso da sua aplicação, não existe um programa que defina, se a conexão está fechada então é 0% se está aberta é 100%, esse meio tempo passa-se em questão de microssegundos, muito rápido para qualquer coisa colocar uma porcentagem na barra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, BackgroundWorker , é uma Thread a mais rodando na sua aplicação.

Se você ta iniciando agora , recomendo não usar isso, estude programação concorrente para executar isso.

E como o KhaosDoctor ja mencionou, conexão e troca de dados com DB, é muito rápida, seria gastar processamento, informando o progresso, e criando uma nova Thread para isso.

Além de que BackgroundWorker, é bom você ter algumas noções de Orientação a Eventos.

 

Se você quer fazer tal coisa, de progresso, nada melhor do que você mesmo informar ao código, a porcentagem na progressbar.

 

Exemplo, ele chegou em tal parte do código, rodou, e funcionou direitinho.

Então você aumenta o valor do progresso no braço mesmo.

progressBar1.Value = novoValor;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.