SharePoint 2010: Manejadores de eventos síncronos vs asíncronos (I)!

Como sabéis, desde SharePoint 2007 contamos con la posibilidad de añadir cierta lógica a nuestras soluciones de SharePoint mediante los denominados manejadores de eventos que no dejan de ser clases que heredan de clases base especificas a ciertos eventos de SharePoint: SPItemEventReceiver para eventos relativos a elementos de lista / biblioteca de documentos, SPListEventReceiver para eventos relativos a listas, SPFeatureReceiver para eventos relativos a características, etc. Todas estas clases, salvo en el caso de SPEmailEventReceiver y SPFeatureReceiver, heredan de una misma clase base SPEventReceiverBase que es la que proporciona todos los métodos que normalmente sobreescribiremos en nuestros manejadores. En SharePoint vamos a tener dos tipos de manejadores de eventos:

  • Los denominados síncronos o “Before”:
    • Aquellos que tienen lugar antes de que ocurra un evento y que por lo tanto son útiles para realizar validaciones, chequeos o cancelaciones antes de que SharePoint escriba información en la BD de contenidos.
    • Estos eventos  se ejecutan en el mismo thread que la acción actual.
  • Los asíncronos o After”:
    • Aquellos que ocurren después de que SharePoint haga un “commit” de los datos en la BD de contenidos de manera que la operación no puede ser cancelada.
    • En este caso, la ejecución se realiza en otro thread respecto a la acción actual aunque es posible forzar una ejecución síncrona jugando con la propiedad Synchronization.