You just have to check to see if the vti_sourcecontrolcheckedoutby property on the item was cleared: This code is using the Before Properties and After Properties on the properties parameter to see what the value of the vti_sourcecontrolcheckedoutby property on the item was before the update occurred, and what it will be after the update has completed.
The vti_sourcecontrolcheckedoutby property identifies who the item is currently checked-out to.
The second time they fire it is in response to the document being checked in.
It appears as though they are firing twice in this situation because Share Point is updating the properties on the document and then checking it in on the same request.
To understand why this is happening, let’s first look at what happens when the user adds a document to the library when the Require Check Out option is disabled: So the net result of this is that the document is uploaded and the Item Adding and Item Added events have fired, which is pretty much what you would expect.So the double-event firing isn’t a bug, it’s just a result of the automatic check-in that occurs when you first add a document to a document library.Note: when the property editor dialog displays, the user has the option to cancel out of the dialog.For example, if you define an instance level variable in the class to store data in the Item Updating event, then try to access that data in the Item Updated event, you will find that the data is not there when you go to check it in the Item Updated event.This is because you have two classes – one that is handling the Item Updating event and in which the instance level variable is set, and one that is handling the Item Updated event in which the instance level variable is not set.