Jump to content

ProgressBar trava o visual


yschmitzz
 Share

Recommended Posts

quero que um progress bar va carregando de acordo com os arquivos carregado,

criei um loop, para veririficar quantos arquivos sao para erem carregados (carrega um arquivo de texto com os documentos que o programa vai carregar, ou eja, o loop verifica quantas linha o bloco de notas tem,

entao ele joga o numero de linhas como valor maximo do progress bar

depoi cada arquivo que ele carrega ele adiciona + 1 no valor do progressbar

so que nao esta funcionando, quando inicia, o visual dele trava, e so destrava quando o loop acaba e o valor do progressbar ja esta no maximo

li algumas duvidas parecida na internet e falaram de thread, talvez eje isso, alguem pode da uma ajuda?

private void button1_Click(object sender, EventArgs e) {
		StreamReader sr3 = new StreamReader("c:/xampp/htdocs/UPDATES/update.txt");
		StreamReader srline3 = new StreamReader("c:/xampp/htdocs/UPDATES/update.txt");

		String arquivo = sr3.ReadLine();
		String nLinhas = srline3.ReadLine();
		int p1Limite = 0;
		while (nLinhas != null) {
			p1Limite++;
			nLinhas = srline3.ReadLine();

		}
		textBox1.Text = textBox1.Text + "teste de progressbar, limite = " + p1Limite;
		progressBar1.Maximum = p1Limite;
		while (arquivo != null) {

			client = "c:/l2" + arquivo;
			servidor = "c:/xampp/htdocs/UPDATES" + arquivo;
			comparaFile(client, servidor, arquivo);
			arquivo = sr3.ReadLine();
		}
		pValor = 0;

	}

COdigo do metodo "comparaFile()"

public void comparaFile(String file, String file2, String arquivoDownload) {

		Boolean igual = false;
		try {
			pValor++;
			progressBar1.Value = pValor;

			String[] Arquivo1 = File.ReadAllLines(file);
			String[] Arquivo2 = File.ReadAllLines(file2);
			int x = 0;

			while (x < Arquivo2.Length) {
				if (Arquivo1[x] == Arquivo2[x]) {
					igual = true;
				} else {
					Arquivo1[x] = Arquivo2[x];
				}
				x++;
			}

			if (igual == true) {
				textBox1.Text = textBox1.Text + "igual";
			} else {
				textBox1.Text = textBox1.Text + "diferente";
			}
		} catch (FileNotFoundException) {
			baixarArquivo(arquivoDownload, file);
		}
	}

desde ja agradeço!!!

Link to comment
Share on other sites

Você precisa passar o download para uma thread secundária pois a thread principal é responsável pela interface gráfica e se você trava ela com outra tarefa dá a impressão para o usuário que o programa travou. Procure aprender sobre o BackgroundWorker que facilita esta parte e também como utilizar métodos assíncronos (geralmente são iguais aos métodos convencionais porem tem o prefixo Begin ou sufixo Async.

  • Vote 1

Fernando Lage Bastos - MCP/MCTS/MCPD

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.