BTW, I've read a article that said change Element.xml Synchronization to Synchronous, we can get BeforeProperties on List events, but I cannot find this reference now.
I'll make some test to confirm it. (Maybe many days or months later......)
List:
| List | BeforeProperties | AfterProperties | properties.ListItem |
| ItemAdding | No value | New value | Null |
| ItemAdded | No value | New value | New value |
| ItemUpdating | No value | Changed value | Original value |
| ItemUpdated | No value | Changed value | Changed value |
| ItemDeleting | No value | No value | Original value |
| ItemDeleted | No value | No value | Null |
Library:
| Library | BeforeProperties | AfterProperties | properties.ListItem |
| ItemAdding | No value | No value | Null |
| ItemAdded | No value | No value | New value |
| ItemUpdating | Original value | Changed value | Original value |
| ItemUpdated | Original value | Changed value | Changed value |
| ItemDeleting | No value | No value | Original value |
| ItemDeleted | No value | No value | Null |
Reference:
BeforeProperties and AfterProperties in Sharepoint Event Receivers
SPEventReceiverDefinition.Synchronization Property