(Editar: aclarar, mi meta principal es la simultaneidad, pero no necesariamente para múltiples núcleos máquinas)Dibujo multiproceso en .NET?
Soy bastante nuevo a todos los conceptos sobre la concurrencia, pero me di cuenta de que necesitaba tener rutinas paralelas dibujo, por una serie de razones:
- quería dibujar diferentes partes de un gráfico separadamente (fondo actualizan con menos frecuencia que en primer plano, guardado en una memoria intermedia).
- Quería control sobre la prioridad (Más prioridad a la capacidad de respuesta de la IU que dibujar un gráfico complejo).
- Quería hacer cálculos de dibujo por cuadro multiproceso.
- Quería ofrecer cancelación para rutinas de dibujo complejas en el búfer.
Sin embargo, al ser un principiante, mi código pronto parecía un desastre y la refacturación o corrección de errores se volvió tan incómoda que decidí que tenía que jugar más con él antes de hacer algo serio.
Así que me gustaría saber cómo hacer un código .NET multiproceso limpio, fácil de mantener que tenga sentido cuando lo miro después de despertarme al día siguiente. El problema más grande que tenía era estructurar la aplicación para que todas las partes hablaran entre sí de una manera inteligente (en lugar de torpe y hacky).
Cualquier sugerencia es bienvenida, pero no tengo una preferencia por las fuentes que puedo digerir en mi tiempo libre (por ejemplo, no más de 500 páginas de un tratado sobre la concurrencia) y para C#/VB.NET, hasta la última versión (ya que veo que ha habido advances). Básicamente, quiero algo directo al grano, así que puedo comenzar jugando con los conceptos en mis proyectos de juguetes.
Describir sus necesidades con más detalle ayudará a las personas a responder su pregunta. ¿Quieres dibujar toda la interfaz de usuario de forma multiproceso? ¿Tiene un solo control que debe ser multiproceso? Probablemente terminará con un grupo de subprocesos consumiendo sus capas de dibujo. –
Lo siento, mi principal preocupación es estructurar dicho código (que normalmente es sincrónico) de manera concurrente. En este caso, se trata de un solo control que podría dividir su dibujo en dos o tres hilos, pero lo que me dificulta es comprender cómo se puede aplicar la concurrencia a algo que normalmente se inicia y finaliza en un evento Paint. –