2011-02-15 12 views
6

Tengo una clase que tiene algunos métodos de ejecución larga, en los que hacen consultas DB, recuperan una lista de objetos, iteran a través de ellos y hacen algunos trabajos IO.C# Class Design - Eventos y métodos de ejecución larga

¿Cómo se debe abordar este diseño de clase?

¿Debo tener OnComplete eventos en mi clase si la tarea se completa?

Quiero dar al consumidor la capacidad de cancelar/cancelar, por lo que simplemente informando cuando el método finaliza no es lo suficientemente bueno.

Inicialmente tenía un BackgroundWorker (y gran parte de la lógica) en mi código de UI, sin embargo, separé la lógica para que esté todo en una biblioteca separada.

Estaba considerando agregar el trabajador de segundo plano en la clase, y simplemente pasar la creación de eventos similares a los planteados por el trabajador de segundo plano. ¿Es este el mejor enfoque?

+0

Es probable que tengas que esperar hasta que Jon Skeet se levante para recibir la mejor respuesta. –

+0

Jon Skeet puede dormir en el mañana;) – Josh

Respuesta

3

No hay nada de incorrecto en el uso de un trabajador de fondo en su clase. Probablemente lo que realmente está buscando es el Event-based Asynchronous Pattern.

+0

Exactamente lo que estaba buscando, gracias! – Henno