¿Podría alguien decirme o sugerirme cómo puedo hacer que la barra de progreso funcione con mis códigos actuales? Estoy descifrando archivos del directorio. Quiero mostrar el progreso. Intenté informar el conteo de inputFiles pero no puedo hacer que funcione.

Aquí está mi código:

  private async Task Start()
    {
        int bufferSize = Convert.ToInt32(cbBufferSize.Text);
        int count = 0;

        foreach (ListViewItem lvi in LV.Items)
        {
            string inputhPaths = lvi.SubItems[0].Text;
            string keyPaths = lvi.SubItems[1].Text;
            outputPaths = Path.Combine(lvi.SubItems[2].Text, lvi.SubItems[3].Text + ".ts");

            using (var fsOutput = new FileStream(outputPaths, FileMode.Create, FileAccess.Write))
            {
                foreach (string inputFiles in Directory.GetFiles(inputhPaths, "*.ts"))
                {
                    using (var fsInput = new FileStream(inputFiles, FileMode.Open, FileAccess.Read))
                    {
                        count++;
                        progressBar1.Value = (int)count / inputFiles.Count() * 100;

                        await Task.Run(() => Decrypter.BufferMethod(fsInput, keyPaths, fsOutput, bufferSize));
                    }
                }
            }
        }
    }
c#
1
zackmark15 24 jun. 2020 a las 19:07

2 respuestas

Simplemente me gustó esto y funcionó

Int contador = 0; string inputFiles = ...............

counter += 1; 
progressBar1.Value = (int)(counter / (double)inputFiles.Count() * 100); 
0
zackmark15 25 jun. 2020 a las 14:57

La forma en que abordo esto es hacer que mi método de tarea DoWork informe el progreso y en mi método ProgressChanged que maneja las actualizaciones de progreso, ahí es donde actualizo mi valor de barra de progreso.

0
Lothar 24 jun. 2020 a las 16:18