while progressbar proceso net mientras ejemplos ejemplo ejecuta bar c# .net-4.0 progress-bar

c# - progressbar - IProgress<T> en.NET 4.0



progressbar c# ejemplo (1)

En realidad, hay dos partes en IProgress<T> : la propia interfaz y la implementación provista, Progress<T> . Técnicamente, la interfaz ni siquiera requiere soporte cruzado, aunque por supuesto así es como se usa en la práctica.

La interfaz, puede copiar textualmente de la documentación de .NET 4.5. Es solo una declaración. Pero para que sea útil, querrá implementarlo también. Para eso, necesitará usar SynchronizationContext para manejar la invocación de hilos cruzados del evento ProgressChanged o el manejador provisto al constructor Progress<T> . Puede escribirlo todo usted mismo, pero en mi humilde opinión es razonable simplemente copiar / pegar desde el código fuente de .NET: http://referencesource.microsoft.com/#mscorlib/system/progress.cs,d23df0450d3fd0d6

Es una clase relativamente simple, y no sería difícil volver a implementarla, pero no debería haber nada sobre la implementación real de .NET que requiera otras características 4.5, así que copiar / pegar desde la fuente debería funcionar bien.

Dicho esto, tenga en cuenta que, de hecho, la funcionalidad equivalente está disponible en versiones anteriores de .NET, en forma de la clase BackgroundWorker . Esto combina tanto la ejecución asincrónica que se usa normalmente junto con IProgress<T> con el evento ProgressChanged que permite que la operación asíncrona informe el progreso. Como solo hay una versión de .NET anterior a 4.5 que también incluye el soporte de TPL que normalmente se usa con IProgress<T> , utilizar BackgroundWorker probablemente tenga más sentido en el contexto del código anterior a 4.5.

¿Existe algún equivalente anterior de .NET 4.0 de la interfaz o clase de IProgress (que solo está disponible desde .NET 4.5) que se puede usar para enviar el progreso de la tarea a la IU?

¿O debería escribir mi propia clase / interfaz para eso?